je me suis surement mal exprimé alors :
je fais un Chat Client et Serveur en deux programmes distinct
un serveur gère tous les clients, il renvoi les messages a tous les clients connecté. 
je l'ai fait en UPD (Datagram socket)
Coté serveur j'identifie mes clients par :
ip et port par lequel il se sont connecté au serveur.
coté client je parle a mon serveur comme ca :
DatagramPacket out = new DatagramPacket(buf, buf.length, hostAddress, 7777);
try{s.send(out);}
on spécifie bien le port du serveur,
Mais le port utilisé par le client pour sortir de son réseau, c'est du port dynamique, donc a chaque message envoyé ça utilise un nouveau port quasiment
donc coté serveur je le vois comme un nouveau client .. 
(je suis sur que personne n'a lu jusqu'ici)
Je auto-solutionne en identifiant mes clients par leurs adresse mac.
Voila j’espère avoir été plus clair.