コード例 #1
0
        public static string IPCliente(TipoIP ipTipo)
        {
            try
            {
                //return HttpContext.Current.Request.UserHostName;
                if (ipTipo == TipoIP.V4)
                {
                    string IP4Address = String.Empty;

                    foreach (IPAddress IPA in Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress))
                    {
                        if (IPA.AddressFamily.ToString() == "InterNetwork")
                        {
                            IP4Address = IPA.ToString();
                            break;
                        }
                    }

                    if (IP4Address != String.Empty)
                    {
                        return(IP4Address);
                    }

                    foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
                    {
                        if (IPA.AddressFamily.ToString() == "InterNetwork")
                        {
                            IP4Address = IPA.ToString();
                            break;
                        }
                    }

                    return(IP4Address);
                }
                if (ipTipo == TipoIP.V6)
                {
                    System.Web.HttpContext context = System.Web.HttpContext.Current;
                    string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

                    if (!string.IsNullOrEmpty(ipAddress))
                    {
                        string[] addresses = ipAddress.Split(',');
                        if (addresses.Length != 0)
                        {
                            return(addresses[0]);
                        }
                    }

                    return(context.Request.ServerVariables["REMOTE_ADDR"]);
                }
                return("");
            }
            catch
            {
                return("");
            }
        }
コード例 #2
0
        public static bool ValidarIP(string ip, TipoIP tipoIP)
        {
            //
            try
            {
                if (Validaciones.EsNulaVacia(ip))
                {
                    return(false);
                }
                IPAddress dirip;
                if (!IPAddress.TryParse(ip, out dirip))
                {
                    return(false);
                }
                switch (tipoIP)
                {
                case TipoIP.V4:
                    StringBuilder expresionBuilder = new StringBuilder();
                    expresionBuilder.AppendFormat(@"^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$");
                    string expresion = expresionBuilder.ToString();
                    if (Regex.IsMatch(ip, expresion))
                    {
                        return(dirip.AddressFamily == AddressFamily.InterNetwork);
                    }
                    else
                    {
                        return(false);
                    }

                case TipoIP.V6:
                    return(dirip.AddressFamily == AddressFamily.InterNetworkV6);

                default:
                    return(false);
                }
            }
            catch
            {
                return(false);
            }
        }