我有一个TCP套接字,我想绑定到本地端点。
我有两种情况:
我曾经使用它的构造函数初始化接受器,传递io_service和端点,但是当它尝试连接到使用的端点时,接受器崩溃了。
acceptor_(io_service_, endpoint)
我接下来要做的是将构造函数更改为仅获取io_service(承诺不会打开套接字)。
acceptor_(io_service_)
我看到asio有一个bind()函数,它将套接字与本地端点绑定在一起。 函数bind()有一个参数,指示是否发生了错误,但对于上述两种情况,它都返回相同的错误。
boost::system::error_code ec;
acceptor_.bind(endpoint, ec);
if(ec)
{
// SOME ERROR NOTIFYING
// EDIT: error code returned is 10009
}
有没有办法连接到端点并为这类错误获取不同的错误?
答案 0 :(得分:2)
我使用的接受器的套接字实际上无效。
根据boost的代码(位于:boost asio implementation),我看到接收io_service和endpoint的构造函数使用端点本身的协议打开套接字,然后才将它与接受器绑定。
解决方案是仅使用io_service初始化接受器,然后打开接受器,然后将端点绑定到它。
感谢您的评论!