C# 獲取IP地址、主機資訊(Host)、瀏覽器資訊
阿新 • • 發佈:2019-01-08
using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Web; namespace NetHelper { public class Net { #region Ip(獲取Ip) /// <summary> /// 獲取Ip /// </summary> public static string Ip { get { var result = string.Empty; if (HttpContext.Current != null) result = GetWebClientIp(); if (string.IsNullOrWhiteSpace(result)) result = GetLanIp(); return result; } } /// <summary> /// 獲取Web客戶端的Ip /// </summary> /// <returns></returns> private static string GetWebClientIp() { var ip = GetWebRemoteIp(); foreach (var hostAddress in Dns.GetHostAddresses(ip)) { if (hostAddress.AddressFamily == AddressFamily.InterNetwork) return hostAddress.ToString(); } return string.Empty; } /// <summary> /// 獲取Web遠端Ip /// </summary> /// <returns></returns> private static string GetWebRemoteIp() { return HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ?? HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } /// <summary> /// 獲取區域網IP /// </summary> /// <returns></returns> private static string GetLanIp() { string ip = string.Empty; foreach (var hostAddress in Dns.GetHostAddresses(Dns.GetHostName())) { if (hostAddress.AddressFamily == AddressFamily.InterNetwork) //return hostAddress.ToString(); ip = ip + ";" + hostAddress.ToString(); } if (!string.IsNullOrEmpty(ip) && ip.Contains(";")) { ip = ip.Substring(1); } return ip; } #endregion #region Host(獲取主機名) /// <summary> /// 獲取主機名 /// </summary> public static string Host { get { return HttpContext.Current == null ? Dns.GetHostName() : GetWebClientHostName(); } } /// <summary> /// 獲取Web客戶端主機名 /// </summary> /// <returns></returns> private static string GetWebClientHostName() { if (!HttpContext.Current.Request.IsLocal) return string.Empty; var ip = GetWebRemoteIp(); var result = Dns.GetHostEntry(IPAddress.Parse(ip)).HostName; if (result == "localhost.localdomain") result = Dns.GetHostName(); return result; } #endregion #region Browser(獲取瀏覽器資訊) /// <summary> /// 獲取瀏覽器資訊 /// </summary> public static string Browser { get { if (HttpContext.Current == null) return string.Empty; var browser = HttpContext.Current.Request.Browser; return string.Format("{0} {1}", browser.Browser, browser.Version); } } #endregion } }