Socket/ServerSocket "Mandar mensaje a cliente por separado"

Hola buenas tardes,

Estoy trabajando con socket comunicandose via TPC. hasta el momento he logrado que el servidor y un cliente se puedan comunicar (mandar mensajes).

El problema que se presento, cuando entran mas clientes, el servidor contesta a todos el mismo mensaje. Pero necesito que conteste por separado a cada cliente.

investigando, algunos comentar que debo de usar diferente puerto para cada cliente, otros tambien comentan que debo de usar socket iteractivo (se supone que de manera iteractiva debe de atender a cada cliente por periodos, pero no encuentro ejemplo alguno).

Agradeceria si alguien puede ayudarme

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de neko069

Dato adicional

Para que se comuniquen por el mismo puerto, deberías de agregar algún dato adicional, como un ID que asignes, o incluso la dirección IP para diferenciar cada socket cliente, y así sabrías que información mandar de vuelta.

Imagen de Nopalin

Yo creo que el id es lo

Yo creo que el id es lo correcto, de otra manera clientes bajo la misma red lan tendrian la misma ip a ojos del servidor.

Imagen de SuperSerch

Y cómo lo logró?

¿Qué no cuando a un ServerSocket le invocas su método accept() te regresa el socket de la conexión?
Es decir, cuando se conecta el segundo recibes un segundo socket y así, entonces a cada socket le mandas la info que el requiere, pues cada objeto socket está ligado con el cliente que se conectó a la IP-puerto del ServerSocket.

Imagen de ezamudio

Puertos

Un ServerSocket escucha en un puerto y como dice SuperSerch, con el método accept() te devuelve la nueva conexión (el método bloquea hasta que entra una conexión nueva). Cada nueva conexión la debes manejar por separado. Si tienes varias conexiones y a todos les contestas lo mismo, es porque tienes un ciclo en algún lado que envía ese mensaje a todas las conexiones que has recibido, no hay manera que puedas hacer eso ni por error.