Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/08/2009, 17:39
StRoYeR
 
Fecha de Ingreso: enero-2008
Mensajes: 24
Antigüedad: 17 años
Puntos: 0
Aceptar más clientes usando sockets

Hola a todos, estoy experimentando un poco sobre el sistema de sockets en C y he optado por la creación de un sistema de chat (por llamarlo de alguna forma)

Quiero crear un servidor que acepte mensajes de varios clientes y que luego el mensaje que le haya llegado sea enviado al resto de clientes.

Por ahora el código lo único que hace es aceptar un cliente y mandarle una respuesta (Hasta ahí he podido llegar), pero.. ¿y el resto? ¿Hay que asignar una ID a cada cliente y guardarlo en un array posteriormente? Cualquier ayuda es bien aceptada.

Ahí va la parte del código correspondiente (Estoy usando Dev-C++)

Código:
void conexion()
{
     int conm; 
     conm=sizeof(struct sockaddr);
     locsock=accept(locsock,(sockaddr*)&conexloc,&conm); // Conexion establecida
     /* Aceptamos la conexión con la funcion "accept" utilizando el descriptor de fichero "locsock" para transmitir los datos entre ambas computadoras
        mediante nuestra estructura "SOCKADDR_IN" definida anteriormente en "conexloc"
     */
     printf("Stablishing connection... OK");
          
         while (conm!=0)
          {
                conm=recv(locsock,Buffer,sizeof(Buffer),0); //recibir datos
 
                if (conm>0) 
                 {  //si seguimos conectados al cliente
                  printf("Datos recibidos: %s",Buffer);
                
                  char msj[] = Buffer;
                  send(locsock,msj,sizeof(msj),0); // Aquí debería enviar el mensaje de alguna forma al resto de clientes conectados
                 }
          }
}