networking - 将 boost asio 绑定(bind)到本地 tcp 端点

标签 networking boost interface bind boost-asio

我正在尝试将 boost asio tcp 套接字专门绑定(bind)到本地网络接口(interface)。在套接字上调用 bind() 方法的正确时间是什么时候?

_endpoint 指向远程 ip/端口,例如192.168.0.15:8888.

// Invoke async. connect. Immediate return, no throw.
_socket.async_connect(_endpoint,
boost::bind(&MyTransceiver::handleConnect, this,
    boost::asio::placeholders::error));

MyTransceiver::handleConenct() 中,我尝试了以下代码:

boost::asio::ip::tcp::endpoint local_end_point(
        boost::asio::ip::address::from_string("192.168.0.55"), 6543 );

    _socket.bind(local_end_point);

在此处调用它失败,在 async_connect() 调用之前调用它,并且出现“无效句柄”异常。

最佳答案

似乎没有足够的信息。但一般来说,您应该:

_socket->打开()

_socket->set_option()

_socket->绑定(bind)()

_socket->async_connect()

在 handleConnect(): _socket->async_read_some()

关于networking - 将 boost asio 绑定(bind)到本地 tcp 端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8416917/

相关文章:

Java 8接口(interface)-静态工厂方法

windows - 除非指定端口 443,否则通过 SSL 的“net use”失败

Java - 地址已在使用中(网络绑定(bind))

c++ - 初始化 asio::ip::address_v6() 的最快方法?

performance - boost 日志 text_file_backend 性能

ruby-on-rails - C/Ruby 接口(interface)的最佳选择

sockets - 我们可以在收到应用程序级别的确认后重置 TCP 连接吗?

C# socket重构(数据发送)

c++ - 在 AIX 上编译 boost 示例程序

android - 是否有任何选项可以在 android 项目中独立调试服务?