Lo que quiere es un servidor de socket multiproceso.
Para esto, necesita un hilo principal que abre un socket para escuchar (y espera las conexiones entrantes del cliente). Esto tiene que entrar en un ciclo while de algún tipo.
Luego, cuando un cliente se conecta, se desbloquea la función accept()
y en ese momento debe atender la solicitud del cliente pasando la solicitud a un hilo que se ocupará de ella.
El lado del servidor se reiniciará y esperará a que se produzca otra conexión mientras el hilo anterior realiza su tarea.
Puede crear subprocesos según lo necesite o utilizar un grupo de subprocesos que podría ser más eficiente (ahorrando tiempo inicializando nuevos subprocesos).
Eche un vistazo a here para obtener más detalles. Busque el socket del servidor multiproceso en la web, específicamente bind()
, listen()
y accept()
desde el lado del servidor.
Si no es para entender la programación del socket, sugiero no usar enchufes simples. En su lugar, use un marco de red. [ACE] (http://www.cs.wustl.edu/~schmidt/ACE-overview.html) o [ZeroMQ] (http://www.zeromq.org/). Inicialmente parece una buena idea hacer tomas de vainilla, pero se vuelve desordenado con el tiempo. – Vikas
Traté de escuchar el puerto de nuevo en otro hilo, pero no funcionó, dice que el puerto está en uso, así que le pregunté;) – Lefsler
No hay nada especial que deba hacer. Todavía estás escuchando, así que no intentes escuchar de nuevo. –