haitao:
技术贴.linux.c++.socket.服务端如何发现客户端主动断线?
[阅读: 3442] 2005-02-04 06:51:00
我现在需要把我的服务程序的状态显示分离出去,由独立的监控程序(可以本机,也可远程,也可能有多个)来显示这些状态
服务程序只管作请求响应,以及把自己的状态告诉独立的监控程序
所有服务程序里又开了一个独立的线程:接受独立的监控程序的socket连接,把这个连接加到自己的socket列表
另一个状态公告线程定时向socket列表中的所有的socket发送最新的状态信息
如果有监控程序关闭退出,则从socket列表中清除它
现在运行时发现一旦有监控程序关闭退出,服务程序就报“断开的管道”,然后崩溃退出!
我在状态公告线程定时向socket列表中的所有的socket逐个发送最新的状态信息时,
先检查这个socket是否有效--不知道怎么判断它是否被断开?
我只是做了一些对象是否为NULL,socket句柄是否<=0的检查,以及try catch,
但是还是会报“断开的管道”,然后崩溃退出!