中国开发网: 论坛: 程序员情感CBD: 贴子 94212
haitao
技术贴.linux.c++.socket.服务端如何发现客户端主动断线?
我现在需要把我的服务程序的状态显示分离出去,由独立的监控程序(可以本机,也可远程,也可能有多个)来显示这些状态
服务程序只管作请求响应,以及把自己的状态告诉独立的监控程序
所有服务程序里又开了一个独立的线程:接受独立的监控程序的socket连接,把这个连接加到自己的socket列表
另一个状态公告线程定时向socket列表中的所有的socket发送最新的状态信息
如果有监控程序关闭退出,则从socket列表中清除它

现在运行时发现一旦有监控程序关闭退出,服务程序就报“断开的管道”,然后崩溃退出!

我在状态公告线程定时向socket列表中的所有的socket逐个发送最新的状态信息时,
先检查这个socket是否有效--不知道怎么判断它是否被断开?
我只是做了一些对象是否为NULL,socket句柄是否<=0的检查,以及try catch,
但是还是会报“断开的管道”,然后崩溃退出!
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录