2011-12-07 18 views
2

私は、ブーストasio tcpソケットをローカルネットワークインターフェイスにバインドしようとしています。ソケットのbind()メソッドを呼び出す正しい時刻はいつですか?ローカルtcpエンドポイントへのboost asioのバインド

_endpointはリモートIP /ポートをポイントします。 192.168.0.15:8888。 "無効なハンドル" 例外を除いて、またasync_connect()コールの前にそれを呼び出して、

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

    _socket.bind(local_end_point); 

ここでそれを呼び出すと失敗:MyTransceiver::handleConenct()以内

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

は、私は次のコードを試してみました。

答えて

4

十分な情報がないようです。しかし、一般的に、あなたがすべき:

_socket->オープン()

_socket-> SET_OPTION()

_socket->バインド()

_socket-> async_connect()

handleConnect():_socket-> async_read_some()

+0

Shawnone、私はopen()またはset_option()をソケット上で呼び出さない。これはasync_connect()によってimpliciteと呼ばれていますか? – PMiller

+0

async_connect()はソケットがまだ開かれていない場合は開きます。オープニング、バインディングは素晴らしい作品です。ありがとう! – PMiller

関連する問題