我是打算写一个局域网的应用,我想问下,如何能获取到本地与外部网络的通信IP地址,通过Dns类获取到的ip地址有很多个,其中有ipv4和ipv6的,但是当ipv4地址有多个的时候,我们怎么知道那个是用于与外网通信的,有些人电脑上装了vm,vm好像有个虚拟的网卡,也会有一个ipv4地址,这些需要怎么过滤掉
IPAddress[] ips = Dns.GetHostEntry(Dns.GetHostName()).AddressList;
要过滤掉虚拟网卡,需要从先获取所有网卡信息,从网卡信息中判断是否是物理网卡,再从网卡信息中获取ip地址。可以参考这篇文章:http://blog.csdn.net/sabty/article/details/4404488 (我试了一下这个代码,其第32行fRegistryKey 的地址写法有误,改一下就可以用了)
另外,从你的意思上来看貌似是要获取公网地址,如果用了路由器的话,这个一般就不是机器上配置的IP地址了。要获取公网地址,一个简单的做法是访问下类似http://www.ip138.com/ 之类的ip查询网站,从网页信息中截取你的ip地址。
谢谢
你可以看下应该是第一个是本机的地址