asp.net 获取主机ip??

asp.net 获取主机ip??,第1张

public static string GetIP

{

get

{

string result = String.Empty

result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]

if (result != null &&result != String.Empty)

{

//可能有代理

if (result.IndexOf(".") == -1)//没有"."肯定是非IPv4格式

result = null

else

{

if (result.IndexOf(",") != -1)

{

//有",",估计多个代理。取第一个不是内网的IP。

result = result.Replace(" ", "").Replace("\"", "")

string[] temparyip = result.Split(",".ToCharArray())

for (int i = 0i <temparyip.Lengthi++)

{

if (IsIPAddress(temparyip[i])

&&temparyip[i].Substring(0, 3) != "10."

&&temparyip[i].Substring(0, 7) != "192.168"

&&temparyip[i].Substring(0, 7) != "172.16.")

{

return temparyip[i] //找到不是内网的地址

}

}

}

else if (IsIPAddress(result)) //代理即是IP格式

return result

else

result = null //代理中的内容 非IP,取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

}

}

/**/

/// <summary>

/// 判断是否是IP地址格式 0.0.0.0

/// </summary>

/// <param name="str1">待判断的IP地址</param>

/// <returns>true or false</returns>

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 regex = new Regex(regformat, RegexOptions.IgnoreCase)

return regex.IsMatch(str1)

}

我给你一段代码,你试试:

 #region 取客户端ip

        /// <summary> 

        /// 取得客户端真实IP。如果有代理则取第一个非内网地址 

        /// </summary> 

        public static string GetIPAddress()

        {

            string result = String.Empty

            result = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]

            if (result != null && result != String.Empty)

            {

                //可能有代理 

                if (result.IndexOf(".") == -1)     //没有“.”肯定是非IPv4格式 

                    result = null

                else

                {

                    if (result.IndexOf(",") != -1)

                    {

                        //有“,”,估计多个代理。取第一个不是内网的IP。 

                        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) != "172.16.")

                            {

                                return temparyip[i]     /到不是内网的地址 

                            }

                        }

                    }

                    else if (IsIPAddress(result)) //代理即是IP格式 

                        return result

                    else

                        result = null     //代理中的内容 非IP,取IP 

                }

            }

            if (null == result || result == String.Empty)

                result = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]

            if (result == null || result == String.Empty)

                result = System.Web.HttpContext.Current.Request.UserHostAddress

            return result

        }

        /// <summary>

        /// 判断是否是IP地址格式 0.0.0.0

        /// </summary>

        /// <param name="str1">待判断的IP地址</param>

        /// <returns>true or false</returns>

        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 regex = new Regex(regformat, RegexOptions.IgnoreCase)

            return regex.IsMatch(str1)

        }

        #endregion

asp.net中获取客户端ip地址的两种方法

方法一:

/// <summary>

/// 获取用户登录IP

/// </summary>

/// <returns></returns>

string GetIp()

{

//可以透过代理服务器

string userIP = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]

if (userIP == null || userIP == "")

{

//没有代理服务器,如果有代理服务器获取的是代理服务器的IP

userIP = Request.ServerVariables["REMOTE_ADDR"]

}

return userIP

}

方法二:(很抱歉,这种方法获取的是服务器端的IP)

//需要using System.Net

string hostname = Dns.GetHostName()//服务器的用户名

Response.Write("HostName:"+hostname)

IPAddress[] address = Dns.GetHostAddresses(hostname)//获取服务器端IP列表,第一IP是address[0]

IPEndPoint ipendpoint = new IPEndPoint(address[0], 1234)

Response.Write("address:"+ipendpoint.Address.ToString())//输出IP:192.168.0.210,不是127.0.0.1

Response.Write("port:" + ipendpoint.Port.ToString())//输出1234

Response.Write("endpoint:" + ipendpoint.ToString())//输出的是192.168.0.210:1234


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/61462.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-27
下一篇2023-02-27

发表评论

登录后才能评论

评论列表(0条)

    保存