我是adsl拔号上用,用以下方法取本外网IP
//获取本机的IP列表,IP列表中的第一项是局域网IP,第二项是广域网IP IPAddress[] addressList = Dns.GetHostEntry(Dns.GetHostName()).AddressList; //如果本机IP列表小于2,则返回空字符串 if (addressList.Length < 2) { return ""; } //返回本机的广域网IP return addressList[1].ToString();
正常情况下是正确的,不这如果我开了个360随身wifi就不行了。每次提出来的外网IP都一样,重拔多少次都一样。
我觉得有可能是开了360随身wffi之后取出的IP列表有多个,也以每次都取索引[1]就取不到外网IP了。请问有什么解决办法吗?
好像在贴吧里看到了这个问题。
其实获取外网Ip最直接的方式是 请求公网的一个web服务或是页面(提供ip解析),然后从返回的结果得到公网IP。因为你的公网Ip只在和公网上的其它主机交互的时候才有意义。
例如 http://www.ip138.com 就提供这种服务。
好处是结果不依赖你上网的方式。
楼上正解