Привязка к определенному IP-адресу с помощью Websocket ++ - PullRequest
0 голосов
/ 18 мая 2018

Использование websocket ++ в качестве клиента к серверу websocket. Я хочу подключиться с использованием определенного IP-адреса моего клиентского сервера.Поэтому я пытаюсь выяснить, как привязать конкретный IP-адрес, но это не сработает.

Я подумал, что обработчик on_socket_init может использоваться для настройки сокета, однако этот обработчик:

void on_socket_init(websocketpp::connection_hdl hdl, boost::asio::ssl::stream<boost::asio::ip::tcp::socket> &s) {
    boost::asio::ip::tcp::endpoint localEndpoint(
            boost::asio::ip::address::from_string("192.168.178.28"), 0);

    std::cout << "Before bind is done " << s.lowest_layer().local_endpoint().address().to_string() << std::endl;
    s.lowest_layer().bind(localEndpoint);
    std::cout << "Bind is done " << s.lowest_layer().local_endpoint().address().to_string() << std::endl;

приводит к тому, что это происходит:

Before bind is done 192.168.178.28
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::system::system_error> >'
  what():  bind: Invalid argument

На моей локальной машине у меня не более одного IP-адреса, поэтому я просто пытаюсь сказать, что он привязывается к одному IP-адресу, который у меня есть, чтоне должен пока ничего менять, кроме проверки того, что я могу вызвать bind ().Однако это взрывается, и я понятия не имею, почему.При тестировании на сервере со вторым IP-адресом я получаю ту же ошибку.

Используя gdb, я обнаружил только то, что исключение выдается функцией, которая проверяет некоторый код ошибки какого-либо внутреннего вызова связывания.Я понятия не имею, где будет код этого внутреннего вызова связывания, и нет никакой дополнительной информации, кроме «Недопустимый аргумент» или код ошибки 22. Это просто число для недопустимого аргумента.

Попытка присвоить поддельноеадрес, которого у меня нет на моей машине, выдает другую ошибку «связать: невозможно назначить запрошенный адрес», поэтому предположите, что адрес, который я передаю, в порядке.

Это правильный способ сделать это вообще?

...