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