欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C# 获取客户端IPv4地址的示例代码

程序员文章站 2022-03-27 09:28:21
网上找了一些获取客户端ip的方法,但本地测试时,返回的是ipv6的表示方法"::1":host文件里面:# ::1 localhost后来找了获取ipv4的方法就可以了,比较好用:public sta...

网上找了一些获取客户端ip的方法,但本地测试时,返回的是ipv6的表示方法"::1":

host文件里面:#    ::1             localhost

后来找了获取ipv4的方法就可以了,比较好用:

public static string getclientipv4address()
    {
      string ipv4 = string.empty;
      foreach (ipaddress ip in dns.gethostaddresses(getclientip()))
      {
        if (ip.addressfamily.tostring() == "internetwork")
        {
          ipv4 = ip.tostring();
          break;
        }
      }
      if (ipv4 != string.empty)
      {
        return ipv4;
      }
      // 利用 dns.gethostentry 方法,由获取的 ipv6 位址反查 dns 纪录,
      // 再逐一判断何者为 ipv4 协议,即可转为 ipv4 位址。
      foreach (ipaddress ip in dns.gethostentry(getclientip()).addresslist)
      //foreach (ipaddress ip in dns.gethostaddresses(dns.gethostname()))
      {
        if (ip.addressfamily.tostring() == "internetwork")
        {
          ipv4 = ip.tostring();
          break;
        }
      }
      return ipv4;
    }

    public static string getclientip()
    {
      if (null == httpcontext.current.request.servervariables["http_via"])
      {
        return httpcontext.current.request.servervariables["remote_addr"];
      }
      else
      {
        return httpcontext.current.request.servervariables["http_x_forwarded_for"];
      }
    }

以上就是c# 获取客户端ipv4地址的示例代码的详细内容,更多关于c# 获取ipv4地址的资料请关注其它相关文章!