asp.net(vb.net)获取真实IP的函数

  aspx vb.net获取真实IP的函数如下:

  

复制代码 代码如下:

  <script runat="server">

  Public Function CheckIp(ByVal ip As String) As Boolean

  Dim pat As String = "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"

  Dim reg As Regex = New Regex(pat)

  if ip = "" Then

  CheckIp = False

  exit Function

  end if

  CheckIp = reg.IsMatch(ip)

  End Function

  Public Function get_cli_ip() As String

  If ( Not( System.Web.HttpContext.Current.Request.ServerVariables("HTTP_CLIENT_IP") Is Nothing) And CheckIp(System.Web.HttpContext.Current.Request.ServerVariables("HTTP_CLIENT_IP")) = True) Then

  get_cli_ip = System.Web.HttpContext.Current.Request.ServerVariables("HTTP_CLIENT_IP")

  Exit Function

  ElseIf Not(System.Web.HttpContext.Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR") Is Nothing) Then

  Dim ips() As String = Split(System.Web.HttpContext.Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")

  For i As Integer = 0 To ips.Length - 1

  If CheckIp(Trim(ips(i))) = True Then

  get_cli_ip = Trim(ips(i))

  Exit Function

  End If

  Next

  End If

  get_cli_ip = System.Web.HttpContext.Current.Request.ServerVariables("REMOTE_ADDR")

  End Function

  </script>

  完整的测试页面:

  

复制代码 代码如下:

  <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  <script runat="server">

  Public Function CheckIp(ByVal ip As String) As Boolean

  Dim pat As String = "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"

  Dim reg As Regex = New Regex(pat)

  if ip = "" Then

  CheckIp = False

  exit Function

  end if

  CheckIp = reg.IsMatch(ip)

  End Function

  Public Function get_cli_ip() As String

  If ( Not( System.Web.HttpContext.Current.Request.ServerVariables("HTTP_CLIENT_IP") Is Nothing) And CheckIp(System.Web.HttpContext.Current.Request.ServerVariables("HTTP_CLIENT_IP")) = True) Then

  get_cli_ip = System.Web.HttpContext.Current.Request.ServerVariables("HTTP_CLIENT_IP")

  Exit Function

  ElseIf Not(System.Web.HttpContext.Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR") Is Nothing) Then

  Dim ips() As String = Split(System.Web.HttpContext.Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")

  For i As Integer = 0 To ips.Length - 1

  If CheckIp(Trim(ips(i))) = True Then

  get_cli_ip = Trim(ips(i))

  Exit Function

  End If

  Next

  End If

  get_cli_ip = System.Web.HttpContext.Current.Request.ServerVariables("REMOTE_ADDR")

  End Function

  </script>

  <html xmlns="http://www.w3.org/1999/xhtml" >

  <head runat="server">

  <title>Untitled Page</title>

  </head>

  <body>

  <%

  Dim client_ip As String = get_cli_ip()

  System.Web.HttpContext.Current.Response.Write(client_ip)

  %>

  </body>

  </html>