【发布时间】:2017-11-04 17:05:36
【问题描述】:
我正在努力使用 c# HttpClient 或其兄弟 (HttpClientHandler,WebRequestHandler,...) 设置连接超时。 HttpClient 中有一个 timeout 属性,但似乎是从请求开始到收到响应的超时。我想要一个方法来指定,例如,如果你在 10 秒内没有收到来自网络套接字的 ACK,那么分手并做下一个。
我看到WinHttpHandler 类中可能有类似的东西,但它似乎已被删除或在最近的版本中不可用。比较第一个链接和第二个链接:
2.WinHttpHandler Microsoft Docs
我真的需要这个,因为我必须尽快区分具有工作网络服务器(可能很慢)的 IP 与根本没有网络服务器的 IP。
【问题讨论】:
-
您是否尝试过使用 TcpClient 或 Socket 并连接到 IP:Port (因为您说 Web 服务器 不是网站)
-
我将以最低的开销完成我的任务。我不会等待一段时间等待网络服务器或网站,如果没问题,然后发送一些请求并等待一段时间。必须有办法做到这一点。我不知道这个 httpclient 类是谁写的,但我认为他没有考虑开发人员的小重要要求@L.B. Apache(java)中的HttpClient有这个属性!
-
@Darrel Miller 我认为这个伟大的家伙在 HttpClient 的幕后工作。但不知道他为什么不这样设计
-
但是你还没有回答我的问题
-
@L.B 不,我没试过。你说的对。我可以这样做,但这不是我的解决方案,因为我每秒发出数百个请求,而这种方法会以某种方式使其翻倍。
标签: c# timeout httpclient