zoukankan      html  css  js  c++  java
  • Windows Phone获取WiFi BSSID

    BSSID,一种特殊的Ad-hoc LAN的应用,也称为Basic Service Set (BSS),一群计算机设定相同的BSS名称,即可自成一个group。每个BSS都会被赋予一个BSSID,它是一个长度为48位的二进制标识符,用来识别不同的BSS。其的主要优点是它可以作为过滤之用。

    BSSID 是指站点的 MAC 地址,(STA)在一个接入点,(AP)在一个基础架构模式, BSS 是由 IEEE 802.11-1999 无线局域网规范定义的。这个区域唯一地定义了每个 BSS 。在一个 IBSS 中,BSSID 是一个本地管理的 IEEE MAC 地址,从一个 46 位的任意编码中产生。地址的个体/组位被设置为 0 。通用/本地地址位被设置为 1 。

    以上话来自百度百科。

    之前开发的时候是为了获取手机所连接的热点的MAC 地址,所以一直是寻找WiFi MAC 地址相关的API或者方法,但没有成功。

     LanIdentifier Class 

    位置数据可表示为 BSSID(如果网络适配器媒体类型是无线 LAN),或不是为元组 <ChassisId, Port Number>(如果网络适配器类型是以太网)。根据 LLDP 协议表示数据。

      有关如何检索 LanIdentifier 对象表示的数据的示例,请参见 如何检索网络适配器和位置信息。  

    直接贴代码吧

        string GetLanIdentifierData(LanIdentifier lanIdentifier)
          {
              string lanIdentifierData = string.Empty;
              if (lanIdentifier == null)
              {
                  return lanIdentifierData;
              }
    
              if (lanIdentifier.InfrastructureId != null)
              {
                  lanIdentifierData += "Infrastructure Type: " + lanIdentifier.InfrastructureId.Type + "
    ";
                  lanIdentifierData += "Infrastructure Value: ";
                  var infrastructureIdValue = lanIdentifier.InfrastructureId.Value;
                  foreach (var value in infrastructureIdValue)
                  {
                      lanIdentifierData += value + " ";
                  }
              }
    
              if (lanIdentifier.PortId != null)
              {
                  lanIdentifierData += "
    Port Type : " + lanIdentifier.PortId.Type + "
    ";
                  lanIdentifierData += "Port Value: ";
                  var portIdValue = lanIdentifier.PortId.Value;
                  foreach (var value in portIdValue)
                  {
                      lanIdentifierData += value + " ";
                  }
              }
    
              if (lanIdentifier.NetworkAdapterId != null)
              {
                  lanIdentifierData += "
    Network Adapter Id : " + lanIdentifier.NetworkAdapterId + "
    ";
              }
              return lanIdentifierData;
          }

     其中 lanIdentifier.InfrastructureId.Value 就是BSSID了,需要取出来,并且转为16进制。

    for (int i = 0; i < lanIdentifier.InfrastructureId.Value.Count; i++)
    {   lanIdentifierData
    += lanIdentifier.InfrastructureId.Value[i].ToString("X2"); }

    这获取的就是BSSID了,至少我获取的值与iPhone获取的值对比是一样的。

    另外,IReadOnlyList<LanIdentifier> lanIdentifiers = NetworkInformation.GetLanIdentifiers(); Windows 8也支持。

    希望对您有帮助。

  • 相关阅读:
    ASP.NET 表单验证 Part.1(理解表单验证)
    Silverlight 简介 Part.3(设计 Siverlight 页面)
    ASP.NET 成员资格 Part.3(LoginStatus、LoginView、PasswordRecovery)
    ASP.NET 网站部署 Part.1(安装IIS、复制文件部署网站)
    ASP.NET Dynamic Data Part.1(创建动态数据应用程序)
    ASP.NET 安全模型 Part.2(SSL)
    ASP.NET MVC Part.2(扩展基本的 MVC 应用程序)
    ASP.NET 网站部署 Part.2(使用 Web 部署)
    开发高级 Web 部件
    创建 Web 部件(WebPart 类、简单的 Web 部件)
  • 原文地址:https://www.cnblogs.com/shiyix/p/4286117.html
Copyright © 2011-2022 走看看