可以在Windows Phone 8.1下获取IP接口名称吗



我正在开发的C++跨平台应用程序需要枚举设备上的所有活动IP,并区分Wi-Fi IP和热点IP。我的方法是比较IP接口名称。在Android和iOS等平台上,接口名称的差异足以区分它们(使用Linux的getifadrs()和ioctl(socket、SIOCGIFCONF和&ifconf)等函数)。例如,在iOS上,Wi-Fi接口的名称总是"en0",而热点接口的名称始终以字符串"bridge"(例如"bridge100")开头。

我现在的目标是Windows Phone 8.1:

  • 有没有办法枚举WP8.1下的接口名称(而不是适配器名称)
  • 在WP8.1下,可以区分Wi-Fi和热点IP吗
  • 有没有一种方法可以在WinRT(Windows运行时)8.x下实现这一点
  • 有没有一种方法可以在C++/CX中做到这一点

有一些Windows函数用于枚举接口信息(例如GetAdaptersInfo),但WP8.1不支持这些函数,并且它们不提供接口名称。

有人能给我指正确的方向吗?

非常感谢。

您可以尝试Quickstart:检索网络连接信息文章。当然,它概述了JavaScript库调用,但它们在C++/C#中是类似的。例如,使用NetworkInformation.GetConnectionProfiles方法,您的代码可能看起来像:

// Retrieve all active connections
var connectionProfiles = NetworkInformation.GetConnectionProfiles();
foreach (var connProfile in connectionProfiles)
{
    // Get all network names that alias this connection's IP
    var theNames = connProfile.GetNetworkNames();
    if (theNames.Any(name => name == "My Desired Name"))
    {
        // Do the thing
    }
}

ConnectionProfile类还包含ProfileName属性,该属性可能在某种程度上指示该配置文件标识的连接类型,但我怀疑这不一定是您所寻求的信息类型。

关于标识连接类型,可以使用NetworkAdapter属性对象的IanaInterfaceType属性来获取有关连接类型的更多信息。

foreach (var connProfile in connectionProfiles)
{
    if (connProfile.NetworkAdapter.IanaInterfaceType == 71) {
        // Take action related to IEEE 802.11 wireless network connection
    }
}

通用Windows 8.1运行时支持这些方法和属性。

相关内容

  • 没有找到相关文章

最新更新