Привязка boost asio к локальной конечной точке TCP - PullRequest
2 голосов
/ 07 декабря 2011

Я пытаюсь привязать TCP-сокет Boost Asio к интерфейсу локальной сети. Когда правильное время для вызова метода 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 Ответ

4 голосов
/ 07 декабря 2011

Похоже, не хватает информации.Но, как правило, вы должны:

_socket-> open ()

_socket-> set_option ()

_socket-> bind ()

_socket-> async_connect ()

в handleConnect (): _socket-> async_read_some ()

...