No estoy exactamente seguro de lo que está pidiendo su pregunta, pero suena como usted está luchando con el hecho de que usted necesita para escuchar un bucle para seleccionar con las conexiones de clientes en su servidor, pero también tiene que hacer un trabajo útil. Asimismo, en su cliente, usted puede ser que necesite para escuchar a la entrada del usuario, pero al mismo tiempo de espera para las respuestas del servidor.
No sé lo que usted está utilizando el idioma, pero he hecho en PHP que coloca una fina capa alrededor del zócalo relacionados con llamadas al sistema por lo que son bastante similares. Por lo general, usted deberá decidir si va a hacer una selección () de llamada de bloqueo o no. si no es el bloqueo, que podría estar girando en el bucle principal, seleccione llamando repetidamente () sin ningún resultado y, sin embargo, todavía masticando hasta lotes de tiempo de CPU.
Usted puede decidir en un tiempo donde seleccionar () bloques de 100 milisegundos sobefore o decidir que no hay datos y la continuación de la ejecución de otro código. Esto tiende a debilitar el rendimiento de su aplicación, porque puede haber cosas que usted debe ir de su aplicación mientras está durmiendo.
Si eso es lo que su pregunta es acerca de, usted puede ser que desee comprobar su aplicación en toma de múltiples subprocesos (o multiproceso). Este concepto se aplica a ambos, servidor y cliente. Usted puede mantener su hilo principal de trabajo de distancia y delegado a petición de E / S a un hilo y dejar que el sistema operativo se encargan de todos los horarios. El flujo de entrada / salida de la cola de todas las peticiones de E / S y el hilo principal de ellos diligentemente el servicio, la entrega de vuelta a la entrada / salida cuando se completa. Lamentablemente, todavía estoy buscando en mi roscando así que no puedo ser de mucha más ayuda. Se puede conseguir un poco peluda cuando tratan con multihilo o multiproceso, porque usted tiene que ten cuidado con las cosas como
condiciones de carrera,
muerto, Y una serie de otros problemas relacionados con la concurrencia.