【问题标题】:How to detect public IP address (of router/gateway) change in .Net?如何检测.Net中的公共IP地址(路由器/网关)变化?
【发布时间】:2011-05-31 03:50:39
【问题描述】:

我知道NetworkChange.NetworkAddressChanged 事件,但这仅适用于本地网络接口。

检测网关的公共 IP 地址发生变化的最佳方法是什么?大概必须通过轮询外部可靠地址来做到这一点,例如 google.com...?

【问题讨论】:

  • 轮询听起来是最好的方法。可能投票/抓取像“whatismyip.com”这样的网站......

标签: c# .net system.net


【解决方案1】:

这是 Akamai 的一个:http://whatismyip.akamai.com/

【讨论】:

    【解决方案2】:

    如果路由器支持它,您可以使用 SNMP 查询其公共 IP 地址(或者,至少,当我尝试这样做时,我必须查询所有 IP 地址并过滤掉私有地址) .您需要识别与 IP 地址值相对应的 OID(对象 ID),我认为这些值在所有路由器中应该是相同的。定期轮询路由器并将之前的结果与当前结果进行比较。或者,设置一个SNMP Trap,这样路由器就会通知您的应用程序 IP 地址发生了变化。与简单地处理来自“我的 IP 是什么”网站的 HTML 相比,实现它可能需要更多的工作,但这会更有效,可能更可靠,不会产生任何 WAN 流量,而且您不必依赖一个您无法控制的网站,可能会通过阻止您或更改其 HTML 结构来破坏您的应用程序。

    #SNMP 是一个用于 .NET 的开源 SNMP 库。

    【讨论】:

      【解决方案3】:

      使用外部 API 是唯一可靠的方法。大多数泄露您的 IP 地址的人会阻止机器发出的请求并要求输入验证码。这是一个允许机器发出请求的好方法:

      http://ip.nefsc.noaa.gov

      【讨论】:

      • 很遗憾,这个链接已经失效了,它返回“对不起,这里没有什么可看的”
      猜你喜欢
      • 1970-01-01
      • 2013-01-13
      • 2011-10-11
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2021-02-28
      相关资源
      最近更新 更多