1. 程式人生 > 程式設計 >C# 獲取客戶端IPv4地址的示例程式碼

C# 獲取客戶端IPv4地址的示例程式碼

網上找了一些獲取客戶端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地址的資料請關注我們其它相關文章!