检测非阻塞套接字中的空闲连接

Detect idle connection in non-blocking socket

我正在编写一个 TCP 服务器,它使用非阻塞套接字和 epoll() 进行 I/O 多路复用。我想检测空闲连接以便关闭它们。我不能将 setsockopt 与 RCVTIMEO 一起使用,因为套接字不会阻塞。我们如何在非阻塞套接字上设置超时? 这与我的另一个问题有关: 如果双重 post 请告诉我,我会删除这个或其他问题。

在你的套接字上使用定时器。您使用的事件循环库应该提供计时器。

或者,您可以设置一个全局计时器,例如每分钟触发一次。在此计时器回调中,您检查每个客户端连接的最后 activity 时间并断开一段时间未激活的连接。