ya que el puerto solo puede escuchar una comunicación única por el puerto te recomiendo usar "división de tiempo"
si un usuario se conecta un nuevo lo guardas en una lista (array) de usuarios, luego vas pasando el "token" entre los usuarios es decir, le envías que es su turno, el se comunica, cierras con el, vas al siguiente de la lista, y así vas, cada quien tiene un turno para hablar
claro este método tiene un punto débil, es sensible a cantidad de usuarios y a retraso... es decir si tienes 10 usuarios con un ping de 200ms cada uno, un usuario solo vería actualización cada 2 segundos
mi recomendación es usar varios puertos
reservas un lote de puertos (ej. del 100 al 200)
y usas 1 puerto de conexión, el usuario se conecta y le envías que puerto le toca (ej el puerto 105), entonces abres el puerto 105 en modo escucha (listen) y el usuario abre la conexión para entrar por ahí y ahí manejas los datos... defecto de este método, un servicio puede usar inesperadamente un puerto bloqueándolo, y que tienes un limite de usuarios definido por la cantidad de puertos
espero que te sirva de algo mi info