我试图获取本地网络的 IP 地址。为此,我搜索并获得了一些示例,但 WindowsStore 应用程序不支持这些类和方法,这是我引用的链接之一 如何以编程方式获取计算机的本地网络 IP 地址?(C#)
如何在 WindowsStore 应用程序中执行此操作?有什么建议么?
我试图获取本地网络的 IP 地址。为此,我搜索并获得了一些示例,但 WindowsStore 应用程序不支持这些类和方法,这是我引用的链接之一 如何以编程方式获取计算机的本地网络 IP 地址?(C#)
如何在 WindowsStore 应用程序中执行此操作?有什么建议么?
我相信 OP 已经有了他需要的答案,但对于其他人来说,基于 Roadrunner 的代码:
public HostName getCurrentIPAddress()
{
IReadOnlyList<HostName> hosts = NetworkInformation.GetHostNames();
foreach (HostName aName in hosts)
{
if (aName.Type == HostNameType.Ipv4)
{
return aName;
}
}
return null;
}
这将获取第一个 IP 地址(可能是唯一的,至少在我的计算机上)并将其作为主机名返回。要将其作为字符串获取,您可以随时调用hostname.DisplayName
当我最近开始玩 VS2013 和我的第一个商店应用程序时,我陷入了同样的困境。我在 C# 方面没有太多经验,但我希望我在 VB 中发现的内容也能对你有所帮助。没错,带有“System.Net.DNS”的示例不适用于 Store-Apps。但经过一些研究后,我发现了“Windows.Networking.Connectivity.NetworkInformation.GetHostNames”类,它不仅可以用来获取主机名,还可以用来获取 IPv4 和 v6 addersses。以下代码在 Visual Basic 中运行良好
HostNamesObj = Windows.Networking.Connectivity.NetworkInformation.GetHostNames
For Each HostName In HostNamesObj
If HostName.Type = 0 Then
ComputerNames= HostName.ToString
End If
If HostName.Type = 1 Then
IPv4_Output = HostName.ToString
End If
If HostName.Type = 2 Then
IPv6_Output = HostName.ToString
End If
Next
如果您成功地将其翻译成 C#,我会很高兴收到您的反馈,因为这正是我现在苦苦挣扎的地方。我刚刚意识到 C# 与 VB 有很多共同点,但它对变量的类型声明要敏感得多!所以:祝你好运,RoadrunnerLI
Dns.GetHostAddresses 在 4.5 中仍然存在
http://msdn.microsoft.com/en-us/library/system.net.dns.gethostaddresses.aspx