如何使用boost-asio区分繁忙端点和未连接端点
how to differ a busy endpoint over a not connected one using boost asio
我有一个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
}
有没有一种方法可以连接到端点并为这类错误获取不同的错误?
我使用的接收器的套接字确实无效。
根据boost的代码(位于:boost-asioimplementation),我看到接收io_service和endpoint的构造函数使用来自endpoint本身的协议打开套接字,然后才将其与接收器绑定。
解决方案是只使用io_service初始化接收器,然后打开接收器,然后将端点绑定到它
感谢您的评论!
相关文章:
- 在CTOR vs Connect方法中提升套接字与stream_socket端点
- 在Win7上,在默认端点上轮询音频会话有时会崩溃
- 如何在具有可变端点的基于范围的for循环中迭代
- 我应该如何使用C++创建 Google 行动行动计划履行端点?
- HTTP异常::无法连接到任何解决的端点-CPPRESTSDK
- C++ 提升:在构建器之后初始化端点
- AWS SNSCLIENT发布呼叫无法到达端点
- Boost Asio udp 解析器返回错误的端点迭代器
- 如何将向量发布到HTTP端点
- C 中的远程过程调用(RPC):在硬编码端点时,可以多个客户端侦听一台服务器
- 示例如何在两个端点之间使用libevent进行阅读和写作
- 使用 libusb-win32 与 USB 到 DMX512 接口通信,找不到任何端点
- 如何从udp端点获取*my*ip
- 为什么我在使用boost :: asio :: null_buffers时无法获得发件人端点
- 增强ASIO绑定端点
- 用端点形成路线
- 如何使用boost-asio区分繁忙端点和未连接端点
- 提升ASIO-获得排序的端点(首先是IPv4,然后是IPv6)
- GNU 无线电值错误:无法强制端点
- amazons3-AWS C++s3 SDK PutObjectRequest无法连接到端点