我正在尝试将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(
)调用之前调用它也会出现“无效句柄”异常。
答案 0 :(得分:4)
看起来没有足够的信息。但一般来说,你应该:
_socket-> open()的
_socket-> set_option()
_socket-> bind()的
_socket-> async_connect()
handleConnect()中的:_socket-> async_read_some()