如何检测Boost Tcp套接字何时断开连接

ura歌

假设我有一个套接字:

std::shared_ptr<tcp::socket> socket( new tcp::socket(acceptor.get_io_service()) );
acceptor.async_accept( *socket, std::bind( handleAccept, this, std::placeholders::_1, socket, std::ref(acceptor)) );

我将weak_ptr存储到容器中的所述套接字。我需要这样做是因为我希望允许客户端请求其他客户端的列表,以便他们可以彼此发送消息。

clients_.insert(socket);  // pseudocode

然后我运行一些异步操作

socket->async_receive( boost::asio::buffer(&(*header), sizeof(Header))
    , 0
    , std::bind(handleReceiveHeader, this, std::placeholders::_1, std::placeholders::_2, header, socket));

如何检测何时关闭连接,以便可以从容器中拔出插座?

clients_.erase(socket); // pseudocode
建场

TCP套接字断开连接通常asioeof或来表示connection_reset例如

  void async_receive(boost::system::error_code const& error,
                     size_t bytes_transferred)
  {
    if ((boost::asio::error::eof == error) ||
        (boost::asio::error::connection_reset == error))
    {
      // handle the disconnect.
    }
    else
    {
       // read the data 
    }
  }

boost::signals2尽管您总是可以将指向函数的指针传递给套接字类,然后再调用它,但我通常信号来表示断开连接。

请注意套接字和回调的生命周期,请参阅:boost-async-functions-and-shared-ptrs

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用TCP KeepAlive检测套接字断开连接

来自分类Dev

使用TCP KeepAlive检测套接字断开连接

来自分类Dev

如何检测客户端何时与UDS断开连接(Unix域套接字)

来自分类Dev

如何检测客户端何时与UDS断开连接(Unix域套接字)

来自分类Dev

套接字无法检测到断开连接

来自分类Dev

如何判断套接字是否已断开连接(Java)

来自分类Dev

Node.JS 原始套接字:如何重复连接断开?

来自分类Dev

Web套接字:无法在Internet断开连接上检测到客户端连接

来自分类Dev

如何在Ruby中检测断开的Unix域套接字?

来自分类Dev

如何在春季正确关闭TCP套接字连接?

来自分类Dev

Node.js-如何跟踪连接的套接字对象?(TCP)

来自分类Dev

如何在套接字连接中接收 tcp 标志

来自分类Dev

如何检测gen_tcp与tcp-client的断开连接?

来自分类Dev

一种检测套接字对等方触发断开连接的方法

来自分类Dev

检测断开的客户端套接字连接(跨平台适用性)

来自分类Dev

一种检测套接字对等方触发断开连接的方法

来自分类Dev

nodejs websocket检测断开的套接字

来自分类Dev

无法检测到套接字已断开

来自分类Dev

检测何时TCP拥塞python扭曲套接字服务器

来自分类Dev

NetworkManager不会检测何时连接或断开电缆

来自分类Dev

用户套接字与服务器断开连接后如何发送消息

来自分类Dev

客户端突然断开连接后,如何使服务器套接字保持活动状态?

来自分类Dev

C ++ Boost Asio-如何检测断开连接并列出所有活动连接

来自分类Dev

TCP套接字服务器如何判断从客户端接收到的数据何时完成?

来自分类Dev

谣言套接字已断开连接:由于套接字收到最后一个PONG消息以来时间太长,因此检测到连通性丢失

来自分类Dev

是否保证php的socket_select()能够检测所有客户端套接字断开连接?

来自分类Dev

如何使TCP套接字超时

来自分类Dev

如何检测流套接字中的中止连接-PHP

来自分类Dev

Linux:TCP 套接字侦听:如何检测无法关闭套接字的客户端?

Related 相关文章

  1. 1

    使用TCP KeepAlive检测套接字断开连接

  2. 2

    使用TCP KeepAlive检测套接字断开连接

  3. 3

    如何检测客户端何时与UDS断开连接(Unix域套接字)

  4. 4

    如何检测客户端何时与UDS断开连接(Unix域套接字)

  5. 5

    套接字无法检测到断开连接

  6. 6

    如何判断套接字是否已断开连接(Java)

  7. 7

    Node.JS 原始套接字:如何重复连接断开?

  8. 8

    Web套接字:无法在Internet断开连接上检测到客户端连接

  9. 9

    如何在Ruby中检测断开的Unix域套接字?

  10. 10

    如何在春季正确关闭TCP套接字连接?

  11. 11

    Node.js-如何跟踪连接的套接字对象?(TCP)

  12. 12

    如何在套接字连接中接收 tcp 标志

  13. 13

    如何检测gen_tcp与tcp-client的断开连接?

  14. 14

    一种检测套接字对等方触发断开连接的方法

  15. 15

    检测断开的客户端套接字连接(跨平台适用性)

  16. 16

    一种检测套接字对等方触发断开连接的方法

  17. 17

    nodejs websocket检测断开的套接字

  18. 18

    无法检测到套接字已断开

  19. 19

    检测何时TCP拥塞python扭曲套接字服务器

  20. 20

    NetworkManager不会检测何时连接或断开电缆

  21. 21

    用户套接字与服务器断开连接后如何发送消息

  22. 22

    客户端突然断开连接后,如何使服务器套接字保持活动状态?

  23. 23

    C ++ Boost Asio-如何检测断开连接并列出所有活动连接

  24. 24

    TCP套接字服务器如何判断从客户端接收到的数据何时完成?

  25. 25

    谣言套接字已断开连接:由于套接字收到最后一个PONG消息以来时间太长,因此检测到连通性丢失

  26. 26

    是否保证php的socket_select()能够检测所有客户端套接字断开连接?

  27. 27

    如何使TCP套接字超时

  28. 28

    如何检测流套接字中的中止连接-PHP

  29. 29

    Linux:TCP 套接字侦听:如何检测无法关闭套接字的客户端?

热门标签

归档