Tengo el siguiente problema.... el programa deja pasar un lapso de tiempo y mira si hay algo para leer, tanto en un socket(una conexión), como en la entrada estandar(con la llamada select() ), pero el problema es que cuando recibo del socket algo, el programa ya no es capaz de leer nada de la entrada estandar, es como si el socket bloqueara la entrada o algo. La parte del codigo conflictiva sería algo como sígue:
*Asumimos que la conexión está manejada por el descriptor newcon
Saludos y gracias
*Asumimos que la conexión está manejada por el descriptor newcon
Código [Seleccionar]
while(1)
{
FD_ZERO(&fds);
FD_SET(newcon,&fds);
FD_SET(STDIN_FILENO,&fds);
select(newcon+1,&fds,NULL,NULL,&intervalo);
if(FD_ISSET(newcon,&fds))
{
while(((sizerec=recv(newcon,buffer,BUFFERSIZE,0))>0)
fwrite(buffer,sizeof(char),sizerec,stdout);
}
if(FD_ISSET(STDIN_FILENO,&fds))
{
scanf("%[^\n]s",envbuffer); // asumimos un buffer muy grande
send(newcon,envbuffer,strlen(envbuffer),0);
}
}
Saludos y gracias