您的位置:首页 > 理论基础 > 计算机网络

用select检测对方断开tcp连接

2012-05-29 17:17 274 查看



使用阻塞式socket发送和接受数据,但是由于没有建立心跳机制,远端服务器在一定时间内(系统设定)没有活动数据,就会断开连接。

无奈只能在每次发送数据之前检测对方是否断开连接,当然在发送数据之前检测的目的是保证这次发收数据不会因为对方断开连接而接受数据失败(对方断开连接,发送还是会成功的)。这个方法比较挫~ 使用了select + recv



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)

{

if(FD_ISSET(lSockFd,&read_set)

{

count = recv(lSockFd,buf,LEN,0);

if((count == 0)||(count == -1))

{

/* 这两种情况都可认为是链路关闭*/

}

}

}

转自:http://guaniuzhijia.blog.163.com/blog/static/16547206920105202242262/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: