Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/04/2013, 07:57
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: Proceso servidor con multiples clientes en C

Puedes hacerlo con threads o puedes hacerlo con notificaciones asincronas de eventos de red (normalmente no se recomiendan los threads para eso).

La libreria de sockets ya provee las funciones necesarias; en windows una vez tienes creado y habilitado el socket (socket, bind) llamas a WSAAsyncSelect y le indicas las notificaciones asincronas que quieres recibir, p.ej. FD_ACCEPT para aceptar clientes, FD_READ para lectura de peticiones, etc... Cada cliente aceptado lo guardas en una lista y en cada notificacion recibes el indentificador del socket que genera ese evento de forma que lo buscas en la lista y ejecutas la operacion referida al evento. Es mas complejo de explicar que de implementar.

Esta funcion forma parte de winsock2, y puedes encontrar mas informcion en la 'Windows Sockets 2 Application Program Interface' o seguramente en msdn. Si no estas trabajando en windows siento no ser de mas ayuda (y creo recordar que la guia beej no cubre esto de los eventos asincronos para servidores).

Saludos
vosk