在同一进程(不同线程)中使用 Boost::asio 和像 accept() (两个 TCP 套接字)这样的本机调用是否存在任何已知问题。我在 Debian 上并使用 C++ 语言。我的观察是 accept() 行为不一致。
在运行进程的特定实例上,客户端能够顺利连接。任意数量的客户端都可以顺利连接。
在运行该进程的另一个实例上,当客户端连接时,接受调用只是失败说“无效参数”。当套接字未正确配置为侦听套接字时,应该会出现这样的错误。一旦出现此错误,所有尝试连接的客户端都会出现相同的错误。唯一的解决方法是再次运行该过程并希望下次它可以正常工作。
更多观察结果:- - 当为某些文件打开更多描述符时,问题往往会消失 - 如果我删除 boost::asio 代码,accept 工作得很好
限制:无法共享我的代码