【问题标题】:Binding boost asio to local tcp endpoint将 boost asio 绑定到本地 tcp 端点
【发布时间】:2011-12-07 14:27:20
【问题描述】:

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

_endpoint 指向远程 ip/port,例如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() 调用之前调用它,还有一个“无效句柄”异常。

【问题讨论】:

    标签: networking boost interface bind boost-asio


    【解决方案1】:

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

    _socket->open()

    _socket->set_option()

    _socket->bind()

    _socket->async_connect()

    在handleConnect()中:_socket->async_read_some()

    【讨论】:

    • Shawnone,我根本不在套接字上调用 open() 或 set_option()。这是否被 async_connect() 称为隐式?
    • async_connect() 如果尚未打开,则打开套接字。打开,装订效果很好。谢谢!
    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    相关资源
    最近更新 更多