asp.net-这段代码怎么解释。。

问题描述

这段代码怎么解释。。
public static string GetIP()
{
string result = String.Empty;

        result = HttpContext.Current.Request.ServerVariables[""HTTP_X_FORWARDED_FOR""];        if (string.IsNullOrEmpty(result))        {            result = HttpContext.Current.Request.ServerVariables[""REMOTE_ADDR""];        }        if (string.IsNullOrEmpty(result))        {            result = HttpContext.Current.Request.UserHostAddress;        }        if (string.IsNullOrEmpty(result) || !Regex.IsMatch(result         @""^((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$""))        {            return ""127.0.0.1"";        }        return result;    }

解决方案

public static string GetIP()
{
string result = String.Empty;
result = HttpContext.Current.Request.ServerVariables[""HTTP_X_FORWARDED_FOR""]; 如果有代理,返回代理服务器报告的原始ip(而不是代理主机的ip)
if (string.IsNullOrEmpty(result))
{
result = HttpContext.Current.Request.ServerVariables[""REMOTE_ADDR""]; 返回主机ip
}

    if (string.IsNullOrEmpty(result))    {        result = HttpContext.Current.Request.UserHostAddress; 这一步实际上多余,UserHostAddress就是remote_addr    }    if (string.IsNullOrEmpty(result) || !Regex.IsMatch(result      @""^((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)$"")) 如果没有ip,比如说内网回环,那么返回127.0.0.1是对的,但是如果是ipv6 ip,这么返回是不对的。总之,这样写简单粗暴且欠考虑。    {        return ""127.0.0.1"";    }    return result;}

解决方案二:
就是获取IP的方法。判断了3次,如果前面3个方法都没有的话或者结果不符合IP地址规则的话,最终返回127.0.0.1.

解决方案三:
这段代码是错误!
因为正则表达式匹配时,没有考虑IPv6.

时间: 2024-11-08 18:35:26

asp.net-这段代码怎么解释。。的相关文章

java-JAVA新手求教一段代码的解释

问题描述 JAVA新手求教一段代码的解释 class StaticSuper{ static{ System.out.println("super static block") } StaticSuper{ System.out.println("super constructor"); } } public class StaticTests extends StaticSuper{ static int rand; static{ rand=(int)(Math

asp.net中using代码语句解释

问题描述 asp.net中using代码语句解释 您好,麻烦帮我解释一下,在代码页面写代码时, 需要在页面的最前面加下面的语句 using JD.Model; 这一句有什么用途?非常谢谢?急用,辛苦了 解决方案 访问另一个命名空间里的类,需要写完整的命名空间,比如 JD.Model.XXX 为了简化,像使用自己的命名空间那样使用,直接写类名XXX即可.需要用using: using JD.Model 解决方案二: using JD.Model; 这个就是你要使用的那个的数据的包 那个包是开发这个

结构中一段代码的解释

问题描述 结构中一段代码的解释 如图,写了一个结构的代码,我想问下,光标选中的那一段是什么意思? 解决方案 构造函数,结构体也可以和类一样包含构造函数. 你可以用 book b = new book(id, 作者, title, ...) 创建一个实例,不需要手工一个字段一个字段赋值. 解决方案二: 你可以理解为初始化函数

异常处理的代码,求解释下这段代码,拜托了

问题描述 异常处理的代码,求解释下这段代码,拜托了 异常处理应该是 try-catch-finally;这段代码只有try-finally,什么情况?怎么运行?怎么处理异常的?万分感谢 `Session sess = this.getSessionFactory().openSession(); try { return (GongWenLeiBie) sess.get(GongWenLeiBie.class id); } finally { sess.close(); } 解决方案 求这段代码

可以帮我解释一下这段代码吗?

问题描述 <%@controllanguage="C#"autoeventwireup="true"inherits="Controls_Footer,WebUI_deploy"%>谁可以帮我解释一下这段代码不,我是初学的,不大懂~希望能详细些!! 解决方案 解决方案二:inherits="Controls_Footer,WebUI_deploy"表示继承language="C#":表示网页的编

javascript-求解释下这段代码,可怜可怜我这个新手吧,拜托了,各位大神

问题描述 求解释下这段代码,可怜可怜我这个新手吧,拜托了,各位大神 求解释下这段代码,最主要的是详细解释下条件语句和 onclick,那个好像是各种嵌套吧,所以我希望大神们能一个点一个点的讲~拜托了,各位大神,可怜可怜我这个新手吧, <s:form action="Save" id="form1" theme="simple" > <div class="buttonDiv"> <s:submit

孙鑫-Visual C++的一段代码搞不懂求解释

问题描述 Visual C++的一段代码搞不懂求解释 说一下自己的理解.题目是孙鑫老是的文本输出的例子. 1:GetBkColor得到背景白色,然后SetTextColor(白色)把背景白色设置为文字颜色.跟着clr应该是赋值得到白色了吧,但是F5看的时候是黑色,就要原文字颜色.我这么理解应该错了 1 COLORREF clr=dc.SetTextColor(dc.GetBkColor()); //GetBkColor属于dc对象,改变dc中的背景值(白色).然后SetTextColor用白色值

ancy orm-用FancyForm添加用户角色,求解释这段代码,

问题描述 用FancyForm添加用户角色,求解释这段代码, var form = $('#form').FancyForm({ title: '添加角色' width: 345 height: 325 inputWidth: 190 labelWidth: 60 url: '<%=path %>/sysRoleController/addRole.do' params: { param1: 1 param2:'string' } defaults: { type: 'string' } it

ip地址-求解释下这段代码...感激不尽

问题描述 求解释下这段代码...感激不尽 u_long ulDestIP; u_long ulDestIP1=inet_addr(a); u_long ulDestIP2=inet_addr(b); unsigned long count = ntohl(ulDestIP2 - ulDestIP1)-1; struct in_addr in; unsigned long hostip; for(unsigned int i = 0; i <=count+1; i++) { hostip = nt