我有一个boost::asio::ip::tcp::acceptor
几乎什么都不做的简单方法——它接受无限循环中的连接。然后我有许多连接器同时运行试图连接......
pSocket->async_connect(endpoint,
[=](boost::system::error_code error)
{
if(!error)
{
boost::asio::ip::tcp::no_delay noDelay(true);
pSocket->set_option(noDelay, error);
assert(!error);
std::cout << error.message() << '\n'; // "An invalid argument was supplied"
}
});
一切都在无限循环中运行,我正在运行 2 个客户端和 1 个服务器,所有环回连接。一段时间后(数百次成功连接和断开连接)在no_delay
连接的套接字上设置选项时出现错误An invalid argument was supplied
。
在什么情况下在套接字上设置选项会导致此错误?有没有人见过这个,知道为什么会发生和/或解决它的方法?
更新:
如果我将设置更改为set_option
...
do
{
pSocket->set_option(noDelay, error);
} while(error);
...它会成功 - 通常在失败后的第二次尝试中。