Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/04/2010, 05:54
azuel
 
Fecha de Ingreso: febrero-2009
Mensajes: 147
Antigüedad: 15 años
Puntos: 1
Pregunta Funciones Blqueates, Socket C

Muy buenos días a todos he hecho un programilla en C que recibe mensajes enviados por los clientes el tema es que para que entre un nuevo cliente debo de ejecutar la función accept() que se queda a la escucha de un cliente nuevo para meterlo "en la conversación" pero el problema es que hasta que no se conecta un nuevo cliente el programa se queda parado...
os pongo el codigo para que veais un poco a lo que me refiero:
Código:
while(1)
{
	for(i=0;i<conex;i++)
   {
   	datos[i]=RecivirDatos(comunicacion,len,Buffer, i);
      if (datos[i]>0)  //si seguimos conectados
     	{
      	Buffer[datos[i]]=0; //le ponemos el final de cadena
         printf("%s(%d):%s",inet_ntoa(local.sin_addr),i,Buffer); //imprimimos la cadena recibida
      }
      else
      {
      	printf("Cliente Numero %d Desconectado\n",i);
        // printf("I %d, conex %d\n",i,conex);
         /*while(i<conex)
         {
         comunicacion[i]=comunicacion[i+1];
          i++;
          }
          conex--; */
         }

 
      	AceptarConexiones(&len,&sock,local,comunicacion,i+1,&conex);


	}
}


//Funciones

void AceptarConexiones(int *len,SOCKET *sock,struct sockaddr_in local,SOCKET *comunicacion,int i,int *conex)
{
    int len2;

   *len=sizeof(struct sockaddr);
   len2=*len;
   comunicacion[i]=accept(*sock,(sockaddr*)&local,&len2);
   *len=len2;
   if(comunicacion[i]==INVALID_SOCKET)
   	printf("No puedo aceptar\n");
   else
   	(*conex)++;

}
entiendo que esto se solucionaría con varios hilos de ejecución lo que llamamos thread pero no se nada de la sintaxis en c en windows

Espero que me puedan ayudar o iluminarme con un solución mas fácil
Un cordial saludo a todos