在局域网内获取本机的外部IP
“ipconfig.exe /all”在局域网中只能获取内部IP, 无法获取本机的外部IP, Dns.Resolve()也一样。
经研究, 在局域网中, 仅凭本机的力量是无法获得本机的外部IP的, 必须登录到外网某个服务器, 那个服务器就知道你的IP, 然后你再取回来。
1
using System;
2
using System.IO;
3
using System.Net;
4
using System.Text.RegularExpressions;
5
6
class Test
7
{
8
// 获取网页的HTML内容
9
static string GetPage(string url)
10
{
11
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
12
try
13
{
14
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
15
{
16
using (StreamReader sr = new StreamReader(res.GetResponseStream()))
17
{
18
return sr.ReadToEnd();
19
}
20
}
21
}
22
catch (System.Exception e)
23
{
24
return e.Message;
25
}
26
finally
27
{
28
req.Abort();
29
}
30
}
31
32
// 通过外部网站得到本机的外部IP
33
static string GetOuterIP()
34
{
35
string patt = @"IP: \[(?<IP>[0-9\.]*)\]";
36
string url = "http://www.skyiv.com/info";
37
return Regex.Match(GetPage(url), patt).Groups["IP"].Value;
38
}
39
40
static void Main()
41
{
42
Console.WriteLine("Inner IP:");
43
foreach (IPAddress ip in Dns.Resolve(Dns.GetHostName()).AddressList)
44
{
45
Console.WriteLine(ip);
46
}
47
Console.WriteLine();
48
Console.WriteLine("Outer IP:");
49
Console.WriteLine(GetOuterIP());
50
}
51
}
using System;2
using System.IO;3
using System.Net;4
using System.Text.RegularExpressions;5

6
class Test7
{8
// 获取网页的HTML内容9
static string GetPage(string url)10
{11
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);12
try13
{14
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())15
{16
using (StreamReader sr = new StreamReader(res.GetResponseStream()))17
{18
return sr.ReadToEnd();19
}20
}21
}22
catch (System.Exception e)23
{24
return e.Message;25
}26
finally27
{28
req.Abort();29
}30
}31

32
// 通过外部网站得到本机的外部IP33
static string GetOuterIP()34
{35
string patt = @"IP: \[(?<IP>[0-9\.]*)\]";36
string url = "http://www.skyiv.com/info";37
return Regex.Match(GetPage(url), patt).Groups["IP"].Value;38
}39

40
static void Main()41
{42
Console.WriteLine("Inner IP:");43
foreach (IPAddress ip in Dns.Resolve(Dns.GetHostName()).AddressList)44
{45
Console.WriteLine(ip);46
}47
Console.WriteLine();48
Console.WriteLine("Outer IP:");49
Console.WriteLine(GetOuterIP());50
}51
}


浙公网安备 33010602011771号