Asio终端套接字功能:取消、关闭、关闭、释放
关闭和清理套接字的正确方法是什么?
我将io_service运行在一个辅助线程中,我需要从主线程关闭连接:
代码语言:javascript运行复制void closeConnection()
{
ioc.post([&socket]() {
// Which ones do I have to call?
// In what order?
// What do they do?
//socket.cancel();
//socket.shutdown(asio::ip::tcp::socket::shutdown_both);
//socket.close();
//socket.release();
});
secondaryThread.join();
}所有这些功能之间有什么区别?
我试过这个序列..。
代码语言:javascript运行复制socket.cancel();
socket.close();
socket.release();并且似乎没有错误地关闭连接,但是花费了太多的时间(大约5-10秒),所以我想我做错了一些事情。