asp如何获得服务器公网IP

来源:百度知道 编辑:UC知道 时间:2024/06/01 20:16:05
我的ASP服务器是我自己的机器,我的机器和其它几台机器用路由构建了一个局域网,所以我的ASP服务器在内网有个IP:192.168.1.8, 通过路由拨号上网后,又有一个公网的IP,也就是网络供应网(电信)随机给分配的那个IP.
我已在路由上做好了端口映射,并用动态域名解析客户端做好了解析,从外网的机器上通过域名都能访问我的ASP站,但我现在用Request.ServerVariables("LOCAL_ADDR") 得到的服务器IP 是内网的192.168.1.8,而不是公网的IP,我想同时得到内网IP和公网那个IP,请问怎么实现?
再次强调:要获得的是在局域网中的机器(ASP服务器)的公网IP,而不是来访用户的IP。

这种情况是无法直接获取公网IP的
可以考虑通过xmlhttp组件去访问外网指定页面获取公网IP

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
g