c++ - WinHttpOpenRequest 和无法到达的目标

标签 c++ winhttp

我正在测试 winHTTP,我注意到无论通过 WinHttpSetTimeouts 设置的超时值如何,如果将 IP 地址与 WinHttpConnect 一起使用并且 IP 地址不可访问(即 ping 返回“目标主机无法访问”),则连接超时始终为 21 秒,即使我将超时值设置得更高也是如此。

正在考虑的值似乎对应于 dwConnectTimeout 值(传递给 WinHttpSetTimeouts 的第 3 个值),因为当减小此值时,超时发生得更快,但上限为 21 秒。

有没有人遇到过这种情况?有谁知道为什么会发生这种情况以及我如何防止这种情况发生?

最佳答案

经过研究,似乎有一个底层的 TCP 连接超时无法由 WinhttpSetTimeOuts 函数控制。一个建议的解决方案是从所需的超时值中减去耗时,如果还有剩余时间,则重试请求。

当然,如果您从那以后找到了更好的解决方案,我将很高兴听到。

关于c++ - WinHttpOpenRequest 和无法到达的目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30332294/

相关文章:

c++ - 使用 ntlm (kerberos) 身份验证时设置凭据

security - 通过 SSL 发送预加密数据

c++ - 如何获取模板模板参数的模板参数?

java - 基于组件的游戏对象的数组和映射之间的优缺点

c++ - 将位图转换为垫子

c - 使用 WinHTTP (C++) 获取请求头

C++ WinHttp 获取响应头和正文

c++ - 如何在实际二进制位前面附加十六进制字节

c++ - std::initializer_list 的实现

c++ - 使用 WinHTTP 下载 HTTP 文件的进度指示