【发布时间】:2018-09-12 08:06:42
【问题描述】:
boost::asio::ip::udp:socket 不能cancel() async_handle,也不能close()。
这是测试程序:
{
boost::asio::io_context io_core;
boost::asio::ip::udp::socket udp_socket1(io_core, udp::v4());
char buff[200];
boost::asio::ip::udp::endpoint endpoint1(boost::asio::ip::address::from_string("127.0.0.1"), 9999);
cout << udp_socket1.is_open() << endl;
udp_socket1.async_send_to(boost::asio::buffer(buff, 200), endpoint1, [&udp_socket1](const boost::system::error_code& ec, size_t wlen) {
cout << udp_socket1.is_open() << endl;
//assert(0);
});
cout << udp_socket1.is_open() << endl;
udp_socket1.close();
udp_socket1.async_send_to(boost::asio::buffer(buff, 200), endpoint1, [&udp_socket1](const boost::system::error_code& ec, size_t wlen) {
cout << udp_socket1.is_open() << endl;
//assert(0);
});
cout << udp_socket1.is_open() << endl;
udp_socket1.close();
io_core.run();
system("pause");
}
使用 boost 1.67.0、WIN10、vs2017 BOOST_ASIO_DISABLE_IOCP 和 BOOST_ASIO_CANCELIO 根据documentation定义
我是不是没抓住重点?
如果我是正确的,如何解决这个问题?
【问题讨论】:
标签: c++ c++11 boost udp boost-asio