如何从 C# Windows 应用程序获取互联网 IP 地址 [重复]
Posted
技术标签:
【中文标题】如何从 C# Windows 应用程序获取互联网 IP 地址 [重复]【英文标题】:How to get internet IP address from C# Windows App [duplicate] 【发布时间】:2011-06-01 18:31:03 【问题描述】:可能的重复:how to get my own IP address in C#?how to get ip address of machine in c#
大家好,我目前正在使用 WPF 为 windows 开发一个 c# 应用程序。我想获取计算机的外部 IP 地址,即互联网地址,而不是本地计算机 IP 地址或本地路由器地址。
感谢您的帮助。
【问题讨论】:
复制...***.com/questions/1069103/… 另一个副本:***.com/questions/2019431/… 除非这个问题得到解决,否则我们手头有一式三份……三份……三份…… 请注意,这些问题的答案倾向于显示任何 ipv4 ip,而不是互联网地址——这就是我认为不应关闭的原因。 @NickAldwin 我同意 OP 想知道互联网地址,而作为重复给出的其他问题可能\可能返回本地 IP 地址。 【参考方案1】:如前所述,您需要一个外部 Web 服务器。使用 URL“http://checkip.dyndns.org/”轻松调用 HTTP GET 将为您提供一个带有您 IP 的简单文本字符串。
【讨论】:
【参考方案2】:您需要在云中的某个位置有一个 Web 服务器,以便您可以调用它并能够为您提供您的外部 IP 地址。
看起来this 一个是免费的。
【讨论】:
【参考方案3】:[编辑] 向here 发送一个简单请求即可获取您的 IP。
这是一种获取 cmets 中指出的任何网络地址(不一定是互联网 ip)的方法:
IPAddress host = IPAddress.None;
foreach (IPAddress ip in Dns.GetHostAddresses(Dns.GetHostName()))
host = ip;
if (ip.AddressFamily == AddressFamily.InterNetwork)
break;
【讨论】:
这将检索本地机器的第一个 IPv4 地址,不一定是机器的外部地址(甚至不能保证是可访问 Internet 的接口)。 您的编辑回答了这个问题。删除旧代码,你会得到我的支持。 :) @chibacity 我把它留在里面是为了让 Simon 的评论看起来不奇怪......并澄清一下。【参考方案4】:我发现的唯一方法是对http://www.whatismyip.com/automation/n09230945.asp 执行 httpWebRequest 并解析 ip 的结果
【讨论】:
他们特别希望你不要那样做。见网源评论:<!--Please set your code to scrape your IP from www.whatismyip.com/automation/n09230945.asp For more info, please see our "Recommended Automation Practices" thread in the Forum.-->
【参考方案5】:
您可以尝试连接whatismyip.com,如下代码所示:
using System;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;
namespace DreamInCode.Snippets
public class IpFinder
public static IPAddress GetExternalIp()
string whatIsMyIp = "http://whatismyip.com";
string getIpRegex = @"(?<=<TITLE>.*)\d*\.\d*\.\d*\.\d*(?=</TITLE>)";
WebClient wc = new WebClient();
UTF8Encoding utf8 = new UTF8Encoding();
string requesthtml = "";
try
requestHtml = utf8.GetString(wc.DownloadData(whatIsMyIp));
catch (WebException we)
// do something with exception
Console.Write(we.ToString());
Regex r = new Regex(getIpRegex);
Match m = r.Match(requestHtml);
IPAddress externalIp = null;
if (m.Success)
externalIp = IPAddress.Parse(m.Value);
return externalIp;
注意:代码来自这篇帖子http://www.dreamincode.net/forums/topic/24692-showing-the-external-ip-address-in-c%23/。
【讨论】:
他们特别希望你不要那样做。请参阅网络源中的评论:<!--Please set your code to scrape your IP from www.whatismyip.com/automation/n09230945.asp For more info, please see our "Recommended Automation Practices" thread in the Forum.-->
不需要抓取 - 因为它只是 ip 的纯文本!他们甚至还在标题中包含 IP 吗?以上是关于如何从 C# Windows 应用程序获取互联网 IP 地址 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何从存储过程中获取 SQL 字符串结果并将其保存在 C# Windows 应用程序字符串变量中
如何从 Windows Mobile 上的 C# 文件中获取修改日期?
如何从 C# windows Form Application 中的 ComboBox 获取 Id