如何检测.Net中的公共IP地址(路由器/网关)的变化?

时间:2011-05-31 03:50:39

标签: c# .net system.net

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

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

#SNMP是.NET的开源SNMP库。

答案 2 :(得分:0)

使用外部API是唯一可靠的方法。显示您的IP地址的大多数人将阻止机器发出的请求并要求CAPTCHA输入。这是一个很好的机器,可以让机器提出要求:

http://ip.nefsc.noaa.gov