C++ Boost ASIO服务器-检测空闲连接
这篇文章的目的是想弄清楚如何在基于Boost ASIO的HTTP服务器上实现保持活动超时 本条分为两部分:C++ Boost ASIO服务器-检测空闲连接,c++,boost,tcp,boost-asio,C++,Boost,Tcp,Boost Asio,这篇文章的目的是想弄清楚如何在基于Boost ASIO的HTTP服务器上实现保持活动超时 本条分为两部分: 当客户端关闭连接时 当客户端连接处于非活动状态时 我相信,1)可以通过在本机套接字句柄上设置TCP_KEEPIDLE、TCP_keepnt和TCP_KEEPINTVL选项来检测上述内容 检测上述情况的最佳方法是什么 我已尝试在本机套接字上设置SO_RCVTIMEO和SO_SNDTIMEO,但服务器似乎没有在配置的超时间隔结束时关闭连接 非常感谢任何指点 谢谢 您希望检测客户端在X个时间段内
谢谢 您希望检测客户端在X个时间段内未向您发送任何内容的情况。您可以使用Asio中的计时器执行此操作: 可以为每个客户端构造一个计时器对象,也可以构造一个全局计时器,并在每次计时器触发时检查所有客户端的上次消息接收时间
SO\u RCVTIMEO
对您没有帮助,因为当它过期时,接收呼叫返回EAGAIN
或类似的消息,Asio可能不会对此做任何事情。请在此处阅读:如果客户端很好地关闭了其连接,则连接端将标记为可读(如果使用轮询),然后Read
或recv
将返回0
。