2011-12-07 4 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

관련 문제