我知道NetworkChange.NetworkAddressChanged
事件,但这仅适用于本地网络接口。
检测网关的公共IP地址的最佳方法是什么?据推测,人们必须通过轮询外部可靠的地址来做到这一点,例如google.com ......?
答案 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输入。这是一个很好的机器,可以让机器提出要求: