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

问题描述 投票:0回答:1

我正在开发的 C++ 跨平台应用程序需要枚举设备上的所有活动 IP 并区分 Wi-Fi IP 和热点 IP。我的方法是比较 IP 接口名称。在 Android 和 iOS 等平台上,接口名称的差异足以区分它们(使用 Linux 的 getifaddrs()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 不支持它们,并且它们不提供接口名称。

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

windows-phone-8 ip-address hotspot
1个回答
1
投票
您可以尝试

快速入门:检索网络连接信息文章。当然,它概述了 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 运行时支持这些方法和属性。

© www.soinside.com 2019 - 2024. All rights reserved.