boost-asio - 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 上的其他客户端能够连接到服务器,我不知道这种间歇性故障的原因。可能是一些被缓存的本地路由吗?如果是这样,我可以在终端中运行一个命令来刷新路由或释放适当的系统资源。
解决方案
推荐阅读
- vue.js - vue在使用动态组件和动态导入时无法获取组件引用
- javascript - 数字字符串 NaN 错误更正解决方法
- quasar-framework - 如果我可以更改或设置 Quasar 通知插件的动画持续时间?
- pyspark - 如何在不使用 palantir Foundry 中的 transform 或 transform_df 的情况下从数据集中导入和读取数据?
- maven - 编译错误maven包不存在
- node.js - Sequelize 交易因外键而失败
- javascript - 在选择中更改选项元素的背景颜色
- powershell - 使用 Powershell 安装给定文件夹中的所有文件
- javascript - 在 chrome 浏览器中面临混合内容的问题
- django - 如何使用 python 将 ogg 文件转换为 mp3?