当前位置: 技术问答>linux和unix
* 用select如何侦测TCP连接是否被对方关闭?
来源: 互联网 发布时间:2015-02-16
本文导语: 3x | 以判断一个连接为例 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(...
3x
|
以判断一个连接为例
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))
{
/* 这两种情况都可认为是链路关闭*/
}
...
}
...
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个字节的数据
|
如果你受到数据长度为0,表示对方已经关闭廉洁