【发布时间】:2013-11-22 03:27:27
【问题描述】:
假设我有一个套接字:
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
【问题讨论】:
标签: c++ sockets boost tcp boost-asio