在局域网内如何获得本机的外部IP

Dns.Resolve()方法和ipconfig/all一样, 在局域网中只能获取内部IP, 无法获取本机的外部IP.

在局域网中, 仅凭本机的力量是无法获得本机的外部IP的, 必须登录到外网某个服务器, 那个服务器就知道你的IP, 然后你再取回来.

using System;
using System.IO;
using System.Net;
using System.Text.RegularExpressions;

class Test
{
// 获取网页的HTML内容
static string GetPage(string url)
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
try
{
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
using (StreamReader sr = new StreamReader(res.GetResponseStream()))
{
return sr.ReadToEnd();
}
}
}
catch (System.Exception e)
{
return e.Message;
}
finally
{
req.Abort();
}
}

// 通过外部网站得到本机的外部IP
static string GetOuterIP()
{
string patt = @"IP: \[(?

 1<ip>[0-9\\.]*)\\]";   
 2string url = "http://www.skyiv.com/info";   
 3return Regex.Match(GetPage(url), patt).Groups["IP"].Value;   
 4}   
 5  
 6static void Main()   
 7{   
 8Console.WriteLine("Inner IP:");   
 9foreach (IPAddress ip in Dns.Resolve(Dns.GetHostName()).AddressList)   
10{   
11Console.WriteLine(ip);   
12}   
13Console.WriteLine();   
14Console.WriteLine("Outer IP:");   
15Console.WriteLine(GetOuterIP());   
16}   
17}</ip>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus