2

我试图获取本地网络的 IP 地址。为此,我搜索并获得了一些示例,但 WindowsStore 应用程序不支持这些类和方法,这是我引用的链接之一 如何以编程方式获取计算机的本地网络 IP 地址?(C#)

如何在 WindowsStore 应用程序中执行此操作?有什么建议么?

4

3 回答 3

6

我相信 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

于 2014-02-16T15:48:21.983 回答
0

当我最近开始玩 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

于 2014-01-04T14:29:10.563 回答
0

Dns.GetHostAddresses 在 4.5 中仍然存在

http://msdn.microsoft.com/en-us/library/system.net.dns.gethostaddresses.aspx

于 2012-12-24T08:34:04.173 回答