【C#】获取本机IP地址

前言

   最近开始做牛腩新闻发布系统,刚接触网页开发,因为没有基础,做起来比较困难,当然BUG就多了。不过“牛”老师水平很高,讲的很清楚,出现BUG分分钟就可以搞定。在做评论新闻这一功能时,需要获取本机的IP地址。这时就出现BUG了。

BUG

根据“牛”老师的方法:

IP = Request.ServerVariables["REMOTE_ADDR"]; 

用这个方法获取IP地址,可是我去数据库看的时候却是 ::1 这样的:
在这里插入图片描述
然后上百度上查,造成这种情况的原因,百度上有各种说法。 通过分析鄙人认为这个方法Request.ServerVariables[“REMOTE_ADDR”],可能解析是的IPV6的地址。而我们需要的IPV4.

解决办法

			string hostName = Dns.GetHostName();   //获取本机名                                 
            IPHostEntry IpEntry = Dns.GetHostEntry(hostName);
            for (int i = 0; i < IpEntry.AddressList.Length; i++)
            {
                //从IP地址列表中筛选出IPv4类型的IP地址
                //AddressFamily.InterNetwork表示此IP为IPv4,
                //AddressFamily.InterNetworkV6表示此地址为IPv6类型
                
                if (IpEntry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
                {
                    IP= IpEntry.AddressList[i].ToString();
                }
            }  

Dns.GetHostEntry()

   Dns.GetHostEntry(主机名) :这个方法可以获取本机的IP地址,不论是IPV4还是IPV6都可以。返回值是一个实体。当我断点看了一下实体里的东西,就恍然大悟了。还等什么呢 ,赶快去试试吧

猜你喜欢

转载自blog.csdn.net/ywq1016243402/article/details/83719617
今日推荐