Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost ASIO服务器-检测空闲连接_C++_Boost_Tcp_Boost Asio - Fatal编程技术网

C++ Boost ASIO服务器-检测空闲连接

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个时间段内

这篇文章的目的是想弄清楚如何在基于Boost ASIO的HTTP服务器上实现保持活动超时

本条分为两部分:

  • 当客户端关闭连接时
  • 当客户端连接处于非活动状态时
  • 我相信,1)可以通过在本机套接字句柄上设置TCP_KEEPIDLE、TCP_keepnt和TCP_KEEPINTVL选项来检测上述内容

    检测上述情况的最佳方法是什么

    我已尝试在本机套接字上设置SO_RCVTIMEO和SO_SNDTIMEO,但服务器似乎没有在配置的超时间隔结束时关闭连接

    非常感谢任何指点


    谢谢

    您希望检测客户端在X个时间段内未向您发送任何内容的情况。您可以使用Asio中的计时器执行此操作:

    可以为每个客户端构造一个计时器对象,也可以构造一个全局计时器,并在每次计时器触发时检查所有客户端的上次消息接收时间


    SO\u RCVTIMEO
    对您没有帮助,因为当它过期时,接收呼叫返回
    EAGAIN
    或类似的消息,Asio可能不会对此做任何事情。请在此处阅读:

    如果客户端很好地关闭了其连接,则连接端将标记为可读(如果使用轮询),然后
    Read
    recv
    将返回
    0