Code代码片断(5do8)

GDI+控件线程IO流ADO.NET接口类,函数语法

新主题
c#分析 meta标签
lucene.net高亮,查询
7zip压缩cookie
lucene.net一个建立,查询...
c#获取IP
lucene.net 教程
c#汉字转拼音
.net json 范例
c#格式化日期
获取IIS的所有网站信息
说话自由

首页 » .NET/C# » 类,函数 »

c#获取IP

标签: ServerVariables IP
//取得真实IP地址   
   public    static    string    GetClientIpAddress(HttpContext    context)   
   {   
   string    result    =    String.Empty;   
   if    (context    ==    null)     
   {   
   return    "000.000.000.000";   
   }   
    
   result    =    HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];   
   if    (null    ==    result    ||    result    ==    String.Empty)   
   {   
   result    =    HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];   
   }   
    
   if    (null    ==    result    ||    result    ==    String.Empty)   
   {   
   result    =    HttpContext.Current.Request.UserHostAddress;   
   }   
    
   return    result;   
   }   
   }


two!

string    IP=Request.ServerVariables["REMOTE_ADDR"].ToString();


vb.net

在ASP中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端的IP地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的IP地址,而不是真正的客户端IP地址。要想透过代理服务器取得客户端的真实IP地址,就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取。不过要注意的事,并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的IP。还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用 Request.ServerVariables ("HTTP_X_FORWARDED_FOR") 取到的值将是空的。因此,如果要在程序中使用此方法,可以这样处理: 
...... 
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") 
If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") 
...... 

即:如果客户端通过代理服务器,则取 HTTP_X_FORWARDED_FOR 的值,如果没通过代理服务器,就取 REMOTE_ADDR 的值。

'通用函数:如果不能取客户端真实IP,就会取客户端的代理IP
Private Function getIP()
     Dim strIPAddr
     If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
         strIPAddr = Request.ServerVariables("REMOTE_ADDR")
     ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
         strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
     ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
         strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)
     Else
         strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
     End If
     getIP = Trim(Mid(strIPAddr, 1, 30))
End Function

ccdot写于2008-9-8 10:24:20

如果愿意,请留下你观点或者感受...
称呼*
内容*
验证码*