当前位置: 技术问答>linux和unix
各位大虾,请给我来个SELECT检测一服务器/客户端有效否,且有TIMEOUT限制的例子!!!
来源: 互联网 发布时间:2015-05-08
本文导语: 对TIMEOUT,SELECT始终理解的不透彻!! 望帮忙!!谢谢!! | 去FAQ找找很多的。 ================================= 以判断一个连接为例 fd_set read_set; struct timeval t_o; ... FD_ZERO(&read_se...
对TIMEOUT,SELECT始终理解的不透彻!!
望帮忙!!谢谢!!
望帮忙!!谢谢!!
|
去FAQ找找很多的。
=================================
以判断一个连接为例
fd_set read_set;
struct timeval t_o;
...
FD_ZERO(&read_set);
FD_SET(lSockFd,&read_set);
t_o.tv_sec = n;/* 超时秒数*/
ret = select(lSockFd + 1,&read_set,NULL,NULL,&t_o);
if(ret == 1)
{ count = recv(lSockFd,buf,LEN,0);
if((count == 0) ¦ ¦(count == -1))
{
/* 这两种情况都可认为是链路关闭*/
}
...
}
...
---------------------------------------------------------------
如果你受到数据长度为0,表示对方已经关闭
=================================
以判断一个连接为例
fd_set read_set;
struct timeval t_o;
...
FD_ZERO(&read_set);
FD_SET(lSockFd,&read_set);
t_o.tv_sec = n;/* 超时秒数*/
ret = select(lSockFd + 1,&read_set,NULL,NULL,&t_o);
if(ret == 1)
{ count = recv(lSockFd,buf,LEN,0);
if((count == 0) ¦ ¦(count == -1))
{
/* 这两种情况都可认为是链路关闭*/
}
...
}
...
---------------------------------------------------------------
如果你受到数据长度为0,表示对方已经关闭
|
怎么会不管用?ari的例子里t_o.tv_usec没有清0,不知道会延时多久?
楼主把代码贴上来。
楼主把代码贴上来。