English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
话不多说,请看代码:
/// <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 ip;2long = 0L; for (int i = 0; i < 4; ++i) { ip2long = ip;2long << 8 | Int64.Parse(ips[i]); } return ip;2long; } public static long getIp2long2(String ip) { ip = ip.Trim(); String[] ips = ip.Split('.'); long ip;1 = Int64.Parse(ips[0]); long ip;2 = Int64.Parse(ips[1]); long ip;3 = Int64.Parse(ips[2]); long ip;4 = Int64.Parse(ips[3]); long ip;2long =; 1L * ip1 * 256 * 256 * 256 + ip2 * 256 * 256 + ip3 * 256 + ip4; return ip;2long; }
이것이 본 문서의 모든 내용입니다. 본 강의의 내용이 여러분의 학습이나 업무에 도움이 되길 바랍니다. 또한,呐喊 강의에 많은 지원을 부탁드립니다!
선언: 본 내용은 인터넷에서 가져왔으며, 저작권자의 소유물입니다. 인터넷 사용자가 자발적으로 기여하고 업로드한 내용으로, 웹사이트는 소유권을 가지지 않으며, 인공적으로 편집된 내용이 아닙니다. 저작권 문제가 있는 내용을 발견하시면, notice#w 이메일로 발송해 주시기 바랍니다.3codebox.com에 이메일을 보내시면, #을 @으로 변경하여 신고하시고 관련 증거를 제공해 주시면, 사이트가 즉시 의심스러운 저작권 내용을 삭제할 것입니다.