我正在开发的软件需要能够使用 TCP/IP 在短时间内连接到许多服务器。软件在Win32下运行。如果服务器没有响应,我希望能够快速继续列表中的下一个服务器。
有时当远程服务器没有响应时,我会在大约 20 秒后收到连接超时错误。超时通常来得更快。
我的问题是这 20 秒会影响我的软件的性能,我希望我的软件能早点放弃(比如 5 秒后)。我假设 Windows 中的 TCP/IP 堆栈(?)会根据某些参数自动调整超时?
在我的应用程序中覆盖此超时并在 X 秒内无法连接时关闭套接字是否合理?
(这可能无关紧要,但该应用程序是使用 C++ 构建的,并使用 I/O 完成端口进行异步网络通信)
最佳答案
如果您使用 IO 完成端口和异步操作,为什么在继续列表中的下一个服务器之前需要等待连接完成?使用 ConnectEx并传入重叠结构。这样单个服务器连接时间就不会加起来,总连接时间是最大服务器连接时间而不是总和。
关于c++ - 我应该实现自己的 TCP/IP 套接字超时吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1568419/