int sockfd;
fd_set fds;
struct timeval timeout;
timeout.tv_sec=3;
timeout.tv_usec=0;
for(;;)
{
FD_ZERO(&fds);
FD_SET(sockfd,&fds);
switch(select(sockfd+1,NULL,&fds,NULL,&timeout))//检查可写状态
{
case -1:perror("error");
case 0://超时发生,
default:if(FD_ISSET(sockfd,&fds))
{
//发送数据
}
}
}
为什么select每次执行只返回-1?
fd_set fds;
struct timeval timeout;
timeout.tv_sec=3;
timeout.tv_usec=0;
for(;;)
{
FD_ZERO(&fds);
FD_SET(sockfd,&fds);
switch(select(sockfd+1,NULL,&fds,NULL,&timeout))//检查可写状态
{
case -1:perror("error");
case 0://超时发生,
default:if(FD_ISSET(sockfd,&fds))
{
//发送数据
}
}
}
为什么select每次执行只返回-1?
解决方案 »
- __int64 和 int 之间如何比较?
- win9x下为指定进程创建线程
- 怎样在颜色对话框选完颜色按确定键后发送一个重绘窗口的消息,Invalidate()?
- 请教各位,如何搜索一个没有title的窗口?
- 微软的Platform SDK 包含 DirectX sdk 吗?
- 那位大侠有关于WSAAsyncSelect模型的源代码(udp+服务器客户端),能否给小弟一份
- 求6.0版 MSDN.
- 分割窗口之间的获取句柄或指针
- 我写了个对话框程序,并且添加了OnShowWindow(BOOL bShow, UINT nStatus)消息。
- 如何改变CDialogBar的大小(长,宽)和位置
- 请教一个简单的关于指针的问题
- 学习方向
FD_SET fds = {1,sockfd};
TIMEVAL timeout = {3, 0};
if(select(0, &fds, NULL, NULL, &timeout) == 0)
{
//超时处理
}
可能问题出在sockfd的连接上