在 C# 中查询站点的外部 IP 时,如何处理现有代码抛出超时错误?

How do you handle existing code throwing a timeout error when querying a site for your external IP in C#?

我正在修改一些查询 http://checkip.dyndns.com/ 并从站点 HTML 响应中派生外部 IP 的 C# 代码。但是,这个特定站点有超时的趋势,有时在 Chrome 中访问它,或者任何浏览器都可能生成连接重置错误。这会导致我正在修改的程序在执行其主要网络配置任务之一时间歇性地失败。

尽管回到我的高中 CCNA 培训,我考虑了两种可能的解决方案。

  1. 为本地计算机外部 IP 查询站点时延长超时期限。

这个解决方案看起来很理想,因为我不知道在响应简单性方面有更好的网站可以使用,而且我宁愿不处理修改解释 http 响应和抓取的代码的额外工作知识产权。然而,它确实提出了一个问题,即我不确定我将如何去做这件事或在源代码中寻找哪些关键字。由于不是我的项目,我对程序架构不是很熟悉。如果有人有任何建议,可以在此处找到来源:http://littlegreatideas.com/procrastineering/files/videochatrobot/VideoChatRobot_v02.zip

打开项目文件并简单地按 Ctrl-F 组合 URL: http://checkip.dyndns.com/ 将产生一些相关代码。

  1. 更改站点以查询不同的、响应速度更快的站点。因此,还更改了抓取代码,这在我看来并不理想,但也不会是糟糕的体验。

感谢美女们的帮助,不胜感激!

您可以试试这个网站:http://ip.telize.com/

您可以查询多个站点并使用最先响应的站点。这需要编写相当多的代码来进行抓取。
另一种方法是使用 STUN 协议并使用 Google 的 STUN 服务器。 STUN 协议正是为这种用途而设计的(除其他外)。