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也支持。

    希望对您有帮助。

  • 相关阅读:
    Python在信号与系统(1)——Hilbert兑换,Hilbert在国家统计局的包络检测应用,FIR_LPF滤波器设计,格鲁吉亚也迫使高FM(PM)调制
    HDU 4925 Apple Tree
    [ACM] HDU 3395 Special Fish (最大重量二分图匹配,KM算法)
    OCP解决问题053-16 MEMORY_TARGET
    图像归一化
    我毕业10年
    静态分析与动态分析
    逐步求精
    抽象与逐步求精
    自项向下,逐步求精
  • 原文地址:https://www.cnblogs.com/shiyix/p/4286117.html
Copyright © 2011-2022 走看看