* 用select如何侦测TCP连接是否被对方关闭?

3x
---------------------------------------------------------------

读信号触发,但收到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,表示对方已经关闭廉洁

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus