socket中select函数返回值总是-1。该如何处理
socket中select函数返回值总是-1。。。
FD_ZERO(&fds);
FD_SET(sockfd0,&fds);
while(1)
{
i=select(sockfd0+1,&fds,NULL,NULL,&timeout);
switch(i)
{
case -1: {
printf("select error\n");
break;
}//select错误,退出程序
case 0:break; //再次轮询
default:
if(FD_ISSET(sockfd0,&fds)) //测试sock是否可读,即是否网络上有数据
{
printf("有数据来到\n");
break;
}
}
}
超时时间设置为20毫秒,第一次执行,select函数返回0,之后就每次都返回-1,这是为什么,求高手指教啊
------解决方案--------------------
FD_ZERO(&fds);
FD_SET(sockfd0,&fds);
把这两句放到while循环里,select前面
每次select前,都需要对fds重新设置的
FD_ZERO(&fds);
FD_SET(sockfd0,&fds);
while(1)
{
i=select(sockfd0+1,&fds,NULL,NULL,&timeout);
switch(i)
{
case -1: {
printf("select error\n");
break;
}//select错误,退出程序
case 0:break; //再次轮询
default:
if(FD_ISSET(sockfd0,&fds)) //测试sock是否可读,即是否网络上有数据
{
printf("有数据来到\n");
break;
}
}
}
超时时间设置为20毫秒,第一次执行,select函数返回0,之后就每次都返回-1,这是为什么,求高手指教啊
------解决方案--------------------
FD_ZERO(&fds);
FD_SET(sockfd0,&fds);
把这两句放到while循环里,select前面
每次select前,都需要对fds重新设置的