boost tcp async_connect () иногда не может подключиться к серверу в той же локальной сети, пока Windows не будет перезагружен - PullRequest
0 голосов
/ 17 февраля 2020

Наши Windows клиентские приложения подключаются к серверу в той же локальной сети через функцию boost::asio::ip::tcp::socket::async_connect, например, так:

std::string ip, port;
boost::asio::io_service io;
boost::asio::ip::tcp::socket client( io );

boost::asio::ip::tcp::endpoint endpoint( boost::asio::ip::address::from_string( ip ), port );
// synchronous. (Does not return in problematic case and callback not called)
client.async_connect( endpoint, boost::bind(&CallbackFunction, this, ip, port, boost::asio::placeholders::error ) );

Время от времени и случайным образом один клиент не может связаться с сервером. независимо от того, сколько раз клиент перезапускается. Единственное решение - перезагрузить рабочую станцию ​​(Windows 7 или 10). Я в недоумении относительно причины этого периодического сбоя, учитывая, что клиент и сервер находятся в одной локальной сети, а другие клиенты в локальной сети могут подключаться к серверу. Это может быть какой-то локальный маршрут, который был кэширован? Если да, то есть команда, которую я могу запустить в терминале для проверки sh маршрута или освобождения соответствующих системных ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...