// The IP address file name behind multiple proxies: IPaddress. csusing system; using system. data; using system. configuration; using system. web; using system. web. security; using system. web. ui; using system. web. UI. webcontrols; using system. web. UI. webcontrols. webparts; using system. web. UI. htmlcontrols; using system. text. regularexpressions; namespace common {/// <summary> // Summary of IPaddress /// </Summary> public class IPaddress: system. web. UI. PAG E {public static int64 todenaryip (string IP) {int64 _ int64 = 0; string _ IP = IP; If (_ IP. lastindexof (". ")>-1) {string [] _ iparray = _ IP. split ('. '); _ int64 = int64.parse (_ iparray. getvalue (0 ). tostring () * 256*256*256 + int64.parse (_ iparray. getvalue (1 ). tostring () * 256*256 + int64.parse (_ iparray. getvalue (2 ). tostring () * 256 + int64.parse (_ iparray. getvalue (3 ). tostring ()-1;} return _ int64 ;} /// <summary> /// IP decimal // </Summary> Public static int64 denaryip {get {int64 _ int64 = 0; string _ IP = IP; if (_ IP. lastindexof (". ")>-1) {string [] _ iparray = _ IP. split ('. '); _ int64 = int64.parse (_ iparray. getvalue (0 ). tostring () * 256*256*256 + int64.parse (_ iparray. getvalue (1 ). tostring () * 256*256 + int64.parse (_ iparray. get Value (2 ). tostring () * 256 + int64.parse (_ iparray. getvalue (3 ). tostring ()-1;} return _ int64;} public static string IP {get {string result = string. empty; Result = httpcontext. current. request. servervariables ["http_x_forwarded_for"]; If (result! = NULL & result! = String. empty) {// There may be proxy if (result. indexof (". ") =-1) // No ". "Definitely not IPv4 format result = NULL; else {If (result. indexof (",")! =-1) {// There are ",", multiple proxies are estimated. Obtain the first IP address that is not an intranet IP address. Result = result. replace ("",""). replace ("", ""); string [] temparyip = result. split (",;". tochararray (); For (INT I = 0; I <temparyip. length; I ++) {If (isipaddress (temparyip [I]) & temparyip [I]. substring (0, 3 )! = "10." & temparyip [I]. substring (0, 7 )! = "192.168" & temparyip [I]. substring (0, 7 )! = "1. 172.16. ") {return temparyip [I]; // find the address that is not the Intranet address} else if (isipaddress (result) // The proxy is the return result in IP format; else result = NULL; // the content in the proxy is not an IP address, take IP} string IPaddress = (httpcontext. current. request. servervariables ["http_x_forwarded_for"]! = NULL & httpcontext. Current. Request. servervariables ["http_x_forwarded_for"]! = String. empty) httpcontext. current. request. servervariables ["http_x_forwarded_for"]: httpcontext. current. request. servervariables ["remote_addr"]; If (null = Result | result = string. empty) Result = httpcontext. current. request. servervariables ["remote_addr"]; If (result = NULL | result = string. empty) Result = httpcontext. current. request. userhostaddress; return result ;}}// whether the IP address format is public static bool isipaddress (string str1) {If (str1 = NULL | str1 = string. empty | str1.length <7 | str1.length> 15) return false; string regformat = @ "^ \ D {1, 3} [\.] \ D {1, 3} [\.] \ D {1, 3} [\.] \ D {1, 3} $ "; RegEx = new RegEx (regformat, regexoptions. ignorecase); Return RegEx. ismatch (str1 );}}}