首页  ·  知识 ·  编程语言
局域网内获取本机的外部IP
佚名  http://hi.baidu.com/ztf704/blog/  .NET  编辑:dezai  图片来源:网络
“ipconfig.exe /all”在局域网中只能获取内部IP, 无法获取本机的外部IP, Dns.Resolve()也一样。 经研究, 在局域网中, 仅凭本机的力量是无法获得本

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

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


1using System;
2using System.IO;
3using System.Net;
4using System.Text.RegularExpressions;
5
6class 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: \[(?[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}

本文作者:佚名 来源:http://hi.baidu.com/ztf704/blog/
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读