EPOLLHUP问题,麻烦高手回答下
时间:2011-12-18
来源:互联网
菜鸟一只!,在写一个聊天室练手,服务端用的EPOLL ET 模式,现在遇到问题如下,如果客户端异常断线,那么服务器该如何检测到客户端断线了呢??想用EPOLLHUP来检测,每个新连接我都设置了EPOLLHUP 和 EPOLLERR事件,测试是这样的,我关闭了客户端,在关闭客户端时候没有去关闭socket,结果发现检测不到EPOLLHUP事件。
作者: mc_ran 发布时间: 2011-12-18
C/C++ code
其他通用的办法还是做心跳,可以规定一下通信协议, 如果是UDP那么客户端定期发UDP心跳, 如果是TCP那么客户端也可以定期发TCP心跳, 服务端根据协议编号确定是数据报还是心跳包, 每次epoll_wait调用之前遍历所有客户端, 根据它们的心跳情况决定是否关闭。
EPOLLRDHUP (since Linux 2.6.17) Stream socket peer closed connection, or shut down writing half of connection. (This flag is especially useful for writing simple code to detect peer shutdown when using Edge Triggered monitoring.)
其他通用的办法还是做心跳,可以规定一下通信协议, 如果是UDP那么客户端定期发UDP心跳, 如果是TCP那么客户端也可以定期发TCP心跳, 服务端根据协议编号确定是数据报还是心跳包, 每次epoll_wait调用之前遍历所有客户端, 根据它们的心跳情况决定是否关闭。
作者: qq120848369 发布时间: 2011-12-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28