2012-12-24 259 views
2

我试图获取本地网络的IP地址。为此,我使用Google搜索并获取了几个样本,但这些类和方法不支持WindowsStore应用程序,下面是我的一个链接How do I get the Local Network IP address of a computer programmatically? (C#)如何获取WindowsStore Apps的本地网络IP地址

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

+0

您认为哪些类和方法在.NET 4.5中不受支持?或者你是否真的在谈论Windows应用商店? –

+0

是的..我在WindowsStore应用程序中尝试过。 – Lokesh

+0

那和.NET 4.5完全不同,它是以前桌面.NET版本的超集。请编辑你的问题,并在将来更小心。 –

回答

0

我在同一点stucked当我最近开始玩弄VS2013和我的第一个商店应用。我没有太多的C#经验,但我希望我发现的VB也可以帮助你。 没错,带有“System.Net.DNS”的示例不适用于Store-Apps。但经过一些研究后,我发现类“Windows.Networking.Connectivity.NetworkInformation.GetHostNames”可以用来获取主机名,也可以获取IPv4和v6附加信息。 下面的代码工作正常在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#,我想对你的反馈非常高兴,因为这是我strugling现在的点。我刚刚意识到C#与VB有许多共同之处,但它对变量的类型声明更加敏感! 所以: 祝你好运,RoadrunnerLI

5

我相信OP已经拥有他所需要的答案,但对于其他人,根据断走鹃代码:

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