读书人

[]socket编程一方突然断开连接selec

发布时间: 2012-09-17 12:06:51 作者: rapoo

[求助]socket编程一方突然断开连接,select方法失效问题

如题,当双方建立好通讯之后,用select方法监测套接字的可读,完全正常,但是如果有一方突然断线,对方的select方法就会失效,不知道什么原因?求解释!

比如client端已经和serv段建立好连接了,serv方首先用select函数检测套接字是否可读,可读则用recv函数来接受消息,client方用send发送消息,此时client突然掉线,则serv方的select方法就会失效,即不再阻塞!

select失效就是,如果客户端在发送数据时候突然掉线,此时客户端已经没有数据发送到服务器端,但是select监测的时候还是当有数据过来,并不阻塞。

求大神指点这是什么原因?如何解决?

1楼xumaojun昨天 18:53
描述不够清楚,select失效是什么意思,socket本身是阻塞的还是非阻塞的,一般服务器和客户端需要维护一个心跳包
Re: memoryjs1小时前
回复xumaojunn就是如果服务器向客户端一直发送数据,select监听读的时候,没有数据过来就会阻塞,但是如果客户端突然掉线,此时客户端没有数据过来,select却不阻塞了,当成是有数据过来了

读书人网 >编程

热点推荐