Comment créer un timestamp de l'heure actuelle en Java
type "netstat -a -n -o" to find out which PID is using this port. Then find the PID in the TaskManager... Then kill the process :)
Enoncé du TP
Ce programme ressemblera à un système de chat transposé à la voix. Chaque usager dispose du même programme. Une fois lancé on doit être en mesure de recevoir les demandes de dialogue qui seront présentées dans une fenêtre sous la forme d'une liste.
Une demande de dialogue est caratérisée par quelques informations d'identification (NOM, PRENOM, @IP, ...), et par les caractéristiques du son attendu (paramètres sons).
L'usager choisit une demande dans la liste et l'accepte.
A partir de ce moment deux canaux audio sont construits pour permettre un dialogue full duplex :
Une deuxième liste montrera les communications en cours, les demandes disparaissent de la prmière liste.
Un bouton "fin" permettra d'interrompre la communication. Le système devra permettre de gérer plusieurs communications simultanéments, soit en alternance soit en parallèle. Pour cela des boutons "Pause/reprise" seront introduits. Dans le cas du traitement en parallele et pour éviter d'être envahi par un locuteur jugé un peu trop "bavard", l'usager pourra à tout moment couper un canal actif ceci sans que son vis-à-vis ne s'en rende compte, on coupe la transmission sur le haut parleur.
Afin d'optimiser la bande passante un algorithme de compression sera mis en place. On utilisera pour cela la technologie SPEEX. Opensource SPEEX est particulièrement adaptée au transport de la voix.
On traitera la question des silences audio, de telle sorte que quand les interlocuteurs ne parlent pas aucun paquets n'est transmis.
Pour gérer les demandes de communication on utilisera un canal TCP, et pour transporter les flux audio on utilisera des canaux UDP.
Livrable :
Délai : fin Juin, vous prendrez rendez vous sur un sondage qui sera publié ultérieurement.
Presentation des buffer en java du package nio
Bon cours simple sur socket, voir partie UDP
Java : Comment itérer sur une hashmap
Map<String, String> items = new HashMap<String, String>();
//fill map with String, String values
…
for (Map.Entry<String,String> entry : items.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
//do stuff here
}