代码改变世界

获取外网的IP的方法!

2007-11-13 11:17  w i n s o n  阅读(1086)  评论(0编辑  收藏  举报
string  ip=  Request.ServerVariables["HTTP_X_FORWARDED_FOR"]  ;  
string  ip2=Request.ServerVariables["REMOTE_ADDR"]  ;  
string  ip3=Request.UserHostAddress;


如果你的服务器放在内网,以上只能获取内网IP,那么有什么方法可以获取外网的IP呢? 其实也很简单,只需使用WebClient里的DownloadData方法去下载某一IP查询网页的内容,然后再对这些内容去正则表达式来匹配,就可获取得当前服务器所在的外网IP了,代码如下:

public IPAddress GetIP()
    
{
        WebClient client 
= new WebClient();
        
byte[] bytRecv = client.DownloadData("http://www.123cha.com/"); //下载网页数据
        string str = System.Text.Encoding.GetEncoding("gb2312").GetString(bytRecv);
        
string r = @"(((\d{1,3})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,3})|(1\d{2})|(2[0-4]\d)|(25[0-5]))";
        
string ip = System.Text.RegularExpressions.Regex.Match(str, r).ToString();    //提取信息        
        return IPAddress.Parse(ip);
    }

调用方法:

System.Net.IPAddress ip = GetIP();
Response.Write(ip.ToString());