将boost asio绑定到本地tcp端点

时间:2011-12-07 14:27:20

标签: networking boost interface bind boost-asio

我正在尝试将boost asio tcp套接字绑定到本地网络接口。何时是在套接字上调用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()调用之前调用它也会出现“无效句柄”异常。

1 个答案:

答案 0 :(得分:4)

看起来没有足够的信息。但一般来说,你应该:

_socket-> open()的

_socket-> set_option()

_socket-> bind()的

_socket-> async_connect()

handleConnect()中的

:_socket-> async_read_some()