你们能否为我提供一个很好的示例代码,使用 EPOLLHUP 进行死对等处理?我知道这是一个检测用户断开连接的信号,但不确定如何在代码中使用它..提前谢谢..
问问题
21759 次
1 回答
43
您用于EPOLLRDHUP
检测对等关闭,而不是EPOLLHUP
(这表示套接字意外关闭,即通常是内部错误)。
使用它非常简单,只需将标志与您要提供的任何其他标志“或” epoll_ctl
。因此,例如,而不是EPOLLIN
write EPOLLIN|EPOLLRDHUP
。
之后epoll_wait
,if(my_event.events & EPOLLRDHUP)
如果对方关闭连接(您可能想要关闭套接字),请执行任何您想做的事情。
请注意,从套接字读取时获得“零字节读取”结果也意味着另一端已关闭连接,因此您也应该始终检查这一点,以避免令人讨厌的意外(FIN
可能在您从EPOLLIN
但在您打电话之前read
,如果您处于 ET 模式,您将不会再收到通知)。
于 2011-06-22T10:09:49.980 回答