我通过以下代码实现判断该sokcet是否有数据到达: fd_set fdread;
timeval timeout; memset(&fdread,0,sizeof(fd_set));
memset(&timeout,0,sizeof(timeval)); FD_ZERO(&fdread);
FD_SET(slirSocket,&fdread);
timeout.tv_sec = 5; while(TRUE)
{
if(nRet = select(0,&fdread,NULL,NULL,&timeout) == SOCKET_ERROR)
{
printf("it is error!\r\n"); }
if(nRet == 0)
printf("it is 0\r\n");
if(nRet > 0)
{
recv(slirSocket,dest,sizeof(dest),0);
break;
}
}
运行结果是总是输出“it is 0"不知道什么原因。
timeval timeout; memset(&fdread,0,sizeof(fd_set));
memset(&timeout,0,sizeof(timeval)); FD_ZERO(&fdread);
FD_SET(slirSocket,&fdread);
timeout.tv_sec = 5; while(TRUE)
{
if(nRet = select(0,&fdread,NULL,NULL,&timeout) == SOCKET_ERROR)
{
printf("it is error!\r\n"); }
if(nRet == 0)
printf("it is 0\r\n");
if(nRet > 0)
{
recv(slirSocket,dest,sizeof(dest),0);
break;
}
}
运行结果是总是输出“it is 0"不知道什么原因。
解决方案 »
- CoUninitialize()执行完,函数返回时出错,请帮助!
- 我在一个子函数里用到了return,结果发现虽然退出了子函数,但还是接着返回父函数接着运行,能否让程序就此中断啊?
- 求助:SetTimer定时器问题
- 如何根据一个treeview中选中的本机目录,在listview中显示该目录下位图缩略图(以文件字母顺序排列)
- 如何用 TextOut 或者 DrawText 输出垂直90 的文字?用 '@宋体'字体可以不?
- 虚函数问题?
- Tc++中有没有清屏函数?快来,在线等
- 88dd,请进
- vc的tools设置怎么改,在线等,谢谢了
- 怎样创建窗口才能不在Windows任务栏上显示任务条?
- 使用CreateProcess的问题.
- 如何在一个自定义类中给自身发送消息,并用自己的成员函数响应该消息?
if(nRet = select(0,&fdread,NULL,NULL,&timeout) == SOCKET_ERROR)
{
printf("it is error!\r\n");
}
else if(nRet == 0)
printf("it is 0\r\n");
else
{
recv(slirSocket,dest,sizeof(dest),0);
break;
}
是这样的,
nRet = select(0,&fdread,NULL,NULL,&timeout);
//像你那样,因为==优先级高于=,所以nRet成为一个BOOL型,或者是0,或者是1
//你的条件nRet = select(0,&fdread,NULL,NULL,&timeout) == SOCKET_ERROR 是个赋值操作,永远为真
if(nRet == SOCKET_ERROR)
{
printf("it is error!\r\n");
}
else if(nRet == 0)
printf("it is 0\r\n");
else
{
recv(slirSocket,dest,sizeof(dest),0);
break;
}