C# 用Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString()的到的不是我的本地ip啊

2020-06-06 教育 85阅读
先分析下你的方法中的问题: 你这个方法只适用于本地单网卡,没有路由器,而且非拨号上网,且系统没有IPv6地址(非Win7&Vista)的情况。如果你不符合其中任意一个条件,你用的方法就不行。不能获得本机的IP.从你的ip输出列表来看,你的机器显然安装有ipv6协议,而且使用了路由。所以,你要单纯找到你自己的本地的ipv4的ip--即192.168.0.8,需要进行一些删选(如果你必须用这种方法)。 解决方案:下面是我对你的代码的小改造:string _IP = null;
foreach (IPAddress _IPAddress in Dns.GetHostEntry(Dns.GetHostName()).AddressList)
{
if (_IPAddress.AddressFamily.ToString() == "InterNetwork")
{ _IP = _IPAddress.ToString(); } } return _IP; 可以看到,这里我判断了你的ip地址族的类型,为InterNetwork。这里的_ip就是你想要的了
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com