Наши 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 маршрута или освобождения соответствующих системных ресурсов.