c++ - 我应该实现自己的 TCP/IP 套接字超时吗?

标签 c++ windows sockets tcp timeout

我正在开发的软件需要能够使用 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/

相关文章:

C++ freeRTOS 任务,非静态成员函数的无效使用

c++ - 构造函数中的虚方法

windows - QML 默认按钮快速控件从哪里获取颜色(如果不是 QML SystemPalette)?

c# - 为什么我不能将 WORKGROUP\.. 添加为 SQL Server 中的用户?

python - 提升 python 服务器的性能

sockets - Erlang:连接到服务器,并在同一个套接字上接收输入

c++ - Qt 拖放 - 拖动时更改图像显示

linux - 通过 ssh/scp 将 linux 和 solaris 文件与本地 Windows 文件进行比较

node.js - 如何在nodejs中终止连接

c++ - 如何从图表上的一个点提取 X 轴上的日期 [mschart]