+ -
当前位置:首页 → 问答吧 → EPOLLHUP问题,麻烦高手回答下

EPOLLHUP问题,麻烦高手回答下

时间:2011-12-18

来源:互联网

菜鸟一只!,在写一个聊天室练手,服务端用的EPOLL ET 模式,现在遇到问题如下,如果客户端异常断线,那么服务器该如何检测到客户端断线了呢??想用EPOLLHUP来检测,每个新连接我都设置了EPOLLHUP 和 EPOLLERR事件,测试是这样的,我关闭了客户端,在关闭客户端时候没有去关闭socket,结果发现检测不到EPOLLHUP事件。

作者: mc_ran   发布时间: 2011-12-18

C/C++ code


       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

热门下载

更多