¿Podrias poner el codigo que has hecho del cliente y servidor para poder ayudarte mejor?
A nivel abstracto creo que lo que quieres hacer se haria del siguiente modo:
- El servidor tiene un socket escuchando conexiones entrantes
- El servidor ejecuta un bucle, a cada iteracion:
- Mira si le entra una conexion por el socket a la escucha.
- Cuando le llega una conexion de un cliente crea un nuevo socket unico para ese cliente y lo añade a una lista de clientes.
- Recorre la lista de clientes a ver si alguno ha enviado algo.
- Si ha enviado algo le manda el mensaje recibido a los demas clientes de la lista.
Esto es con un solo hilo como has pedido, si lo haces con threads en vez de una lista sockets para cada cliente/conexion tendrias un hilo para cada cliente/conexion.