/// <summary>/// 獲取客戶端IP/// </summary>/// <returns></returns>public static string GetClientIpAddress(){var httpContext = HttpContext.Current;if (httpContext.Request.ServerVariables == null){return null;}var clientIp = httpContext.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ??httpContext.Request.ServerVariables["REMOTE_ADDR"];try{foreach (var hostAddress in Dns.GetHostAddresses(clientIp)){if (hostAddress.AddressFamily == AddressFamily.InterNetwork){return hostAddress.ToString();}}foreach (var hostAddress in Dns.GetHostAddresses(Dns.GetHostName())){if (hostAddress.AddressFamily == AddressFamily.InterNetwork){return hostAddress.ToString();}}}catch (Exception ex){}return clientIp;}/// <summary>/// ip是否在ip空間內/// </summary>/// <param name="ip"></param>/// <param name="ipSection"></param>/// <returns></returns>public static Boolean ipExistsInRange(String ip, String ipSection){ipSection = ipSection.Trim();ip = ip.Trim();int idx = ipSection.IndexOf('-');String beginIP = ipSection.Substring(0, idx);String endIP = ipSection.Substring(idx + 1);return getIp2long(beginIP) <= getIp2long(ip) && getIp2long(ip) <= getIp2long(endIP);}public static long getIp2long(String ip){ip = ip.Trim();String[] ips = ip.Split('.');long ip2long = 0L;for (int i = 0; i < 4; ++i){ip2long = ip2long << 8 | Int64.Parse(ips[i]);}return ip2long;}public static long getIp2long2(String ip){ip = ip.Trim();String[] ips = ip.Split('.');long ip1 = Int64.Parse(ips[0]);long ip2 = Int64.Parse(ips[1]);long ip3 = Int64.Parse(ips[2]);long ip4 = Int64.Parse(ips[3]);long ip2long = 1L * ip1 * 256 * 256 * 256 + ip2 * 256 * 256 + ip3 * 256 + ip4;return ip2long;}
?