2012-12-24 240 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