我正在测试 winHTTP,我注意到无论通过 WinHttpSetTimeouts 设置的超时值如何,如果将 IP 地址与 WinHttpConnect 一起使用并且 IP 地址不可访问(即 ping 返回“目标主机无法访问”),则连接超时始终为 21 秒,即使我将超时值设置得更高也是如此。
正在考虑的值似乎对应于 dwConnectTimeout 值(传递给 WinHttpSetTimeouts 的第 3 个值),因为当减小此值时,超时发生得更快,但上限为 21 秒。
有没有人遇到过这种情况?有谁知道为什么会发生这种情况以及我如何防止这种情况发生?
最佳答案
经过研究,似乎有一个底层的 TCP 连接超时无法由 WinhttpSetTimeOuts
函数控制。一个建议的解决方案是从所需的超时值中减去耗时,如果还有剩余时间,则重试请求。
当然,如果您从那以后找到了更好的解决方案,我将很高兴听到。
关于c++ - WinHttpOpenRequest 和无法到达的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332294/