【问题标题】:external IP-address in C#C#中的外部IP地址
【发布时间】:2018-10-17 13:11:55
【问题描述】:

在 C# 中获取我的外部 IP 地址的最简单方法是什么?

【问题讨论】:

  • @Mitch Wheat,您提供的链接不适用。该问题询问如何获取本地IP地址。这里的OP询问了外部IP地址。
  • 在您和链接另一端的机器之间可能有多层 NAT 正在运行 - 更不用说互操作层处理 IP4 和 IP6 之间转换的可能性了。这使得很难给你的问题任何有意义的答案。也许,如果您编辑了您的问题以告诉我们为什么您认为您需要这些信息,那么有人可以提供帮助。

标签: c#


【解决方案1】:

在框架内没有内置的方法可以做到这一点,因为很难确定外部/公共 IP 地址是什么。这当然是假设您的 IP 在某个网关后面进行了 NAT。

一种方法是使用WebClient 类抓取像http://www.whatismyip.org/ 这样的网站。

System.Net.WebClient client = new System.Net.WebClient();
string ip = client.DownloadString( "http://www.whatismyip.org" );
Console.Out.WriteLine( ip );

【讨论】:

    【解决方案2】:
    public static string GetExternalIP()
    {
         using (var wc = new System.Net.WebClient())
             return wc.DownloadString("http://whatismyip.org");
    }
    

    【讨论】:

      【解决方案3】:
      public String getLocalIP()
      {
          IPHostEntry host;
          host = Dns.GetHostEntry(Dns.GetHostName());
      
          foreach (IPAddress ip in host.AddressList)
          {
              if (ip.AddressFamily == AddressFamily.InterNetwork)
              {
                  return ip.ToString();
              }
          }
          return "127.0.0.1";
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-20
        • 2011-07-29
        • 2017-01-26
        • 2011-06-29
        • 1970-01-01
        • 1970-01-01
        • 2010-10-28
        • 1970-01-01
        相关资源
        最近更新 更多