我C++ library
正在与使用boost :: asio_connector_async 问题列表的TCP连接,如果有一个流是由于某种原因关闭,没有信息由升压发送到我的关于同一个库。 因此,我的库永远无法检测到哪些流已关闭,哪些仍处于打开状态。 我的库包含类boost的目标:: asio_connector_async(通过连接器的名称),并以这种方式连接到主机,端口:如何检测通过boost :: asio_stream_async连接的特定tcp流是否关闭?
connector.async_connect(hostname.c_str(), qport.c_str(), boost::bind(bc::asio_bind_sock_chan<pubsub_channel,pubsub_channel::text_marshaler_registry>(),boost::ref(chan), boost::ref(mar_reg), hostname, qport, channel_logger, _1, _2, _3));
当特定<host,port>
流被关闭,该功能boost::asio_connector_async::on_stream_closed
被称为从内部文件asio_stream_async.hpp
void on_stream_closed(void * sp, const std::string & host, const std::string port) {
boost::channel::logger_stream(logger_) << "boost::channel::asio_connector_async::on_stream_closed - " << host << ":" << port << ": stream 0x" << sp << " closed";
}
我想我的库连接到boost::asio_connector_async::on_stream_closed
以这样的方式,每当这个特殊的函数被调用,在我的图书馆的一些功能也被调用,这样我的图书馆是知道哪些特定的流CLOS编辑,然后应尝试重新连接与该流 请建议如何实现相同?我无法想象如果没有修改增强库(我不应该这样做)来达到这个目的, 如果还有其他方法来检测封闭连接,请将这些建议给我。
我在这种网络编程的新的,因此需要使用相同的帮助。 在此先感谢
我不认为升压/信道/流/ asio_connector_async.hpp :: async_conect需要一个“错误”的说法。 void async_connect(std :: string host,std :: string port, sock_conn_handler hndl) 我的代码使用asio_connector_sync的对象直接调用async_connect –
我的基本问题是将断开连接信息发送到客户端库。 Boost库在套接字关闭时检测到断开连接,但该信息未与客户端库进行通信。 –
@ShubhiAgarwal它的你的处理程序应该采取'asio :: error',而不是async_connect。在你的情况'sock_conn_handler'。你能告诉我函数'sock_conn_handler'的签名吗? – Arunmu