首页 > 解决方案 > boost tcp async_connect() 有时无法连接到同一 LAN 上的服务器,直到重新启动 Windows

问题描述

我们的 Windows 客户端应用程序通过如下函数连接到同一 LAN 上的服务器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)。鉴于客户端和服务器位于同一个 LAN 上,并且 LAN 上的其他客户端能够连接到服务器,我不知道这种间歇性故障的原因。可能是一些被缓存的本地路由吗?如果是这样,我可以在终端中运行一个命令来刷新路由或释放适当的系统资源。

标签: boost-asiowindows-networking

解决方案


推荐阅读