有人告诉我,以下代码可以满足我的要求(即列出运行我的应用程序的设备上的所有可用IP,并将它们显示为列表,允许用户选择一个)。
var ips = NetworkInterface.GetAllNetworkInterfaces()
.Where(inf => inf.NetworkInterfaceType != NetworkInterfaceType.Loopback)
.Where(inf => inf.OperationalStatus == OperationalStatus.Up)
.Select(x => new{
name = x.Name,
ips = x.GetIPProperties().UnicastAddresses.Select(y=>y.Address)
.ToList()
})
.ToList();
现在事实证明,其中大多数功能不适用于Windows Phone或Windows Store用户。我认为我需要的是
Microsoft.Phone.Net.NetworkInformation
名称空间,但我无法查明所需的确切方法。我在Android和Apple中都这样做,这很简单。下面是Apple视图的示例:
using Windows.Networking.Connectivity;
var ips = NetworkInformation.GetHostNames()
.Where(x => x.IPInformation != null)
.Select(x => x.DisplayName)
.ToList();