2011-05-31 48 views
4

我知道NetworkChange.NetworkAddressChanged事件,但这只适用于本地网络接口。如何检测.Net中(路由器/网关的)公共IP地址的变化?

检测网关公共IP地址的最佳方法是什么改变了?据推测,必须通过投票外部可靠的地址,如google.com ......来做到这一点?

+0

轮询听起来像是最好的方式。可能投票/刮一个网站,如“whatismyip.com”... – Jemes 2011-05-31 04:03:05

回答

0

使用外部API是唯一可靠的方法。他们中的大多数人显示您的IP地址将阻止机器发出的请求并要求输入验证码。这里是一个很好的,让机器进行要求:

http://ip.nefsc.noaa.gov

+0

不幸的是,这个链接不再工作,它返回“对不起,这里没有什么可以看到” – dcastro 2015-01-07 16:43:53

1

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

#SNMP是.NET的开源SNMP库。