Windows Phone獲取WiFi BSSID

BSSID,一種特殊的Ad-hoc LAN的應用,也稱爲Basic Service Set (BSS),一羣計算機設定相同的BSS名稱,便可自成一個group。每一個BSS都會被賦予一個BSSID,它是一個長度爲48位的二進制標識符,用來識別不一樣的BSS。其的主要優勢是它能夠做爲過濾之用。windows

BSSID 是指站點的 MAC 地址,(STA)在一個接入點,(AP)在一個基礎架構模式, BSS 是由 IEEE 802.11-1999 無線局域網規範定義的。這個區域惟一地定義了每一個 BSS 。在一個 IBSS 中,BSSID 是一個本地管理的 IEEE MAC 地址,從一個 46 位的任意編碼中產生。地址的個體/組位被設置爲 0 。通用/本地地址位被設置爲 1 。網絡

以上話來自百度百科。架構

以前開發的時候是爲了獲取手機所鏈接的熱點的MAC 地址,因此一直是尋找WiFi MAC 地址相關的API或者方法,但沒有成功。app

 LanIdentifier Class ide

位置數據可表示爲 BSSID(若是網絡適配器媒體類型是無線 LAN),或不是爲元組 <ChassisId, Port Number>(若是網絡適配器類型是以太網)。根據 LLDP 協議表示數據。編碼

  有關如何檢索 LanIdentifier 對象表示的數據的示例,請參見 如何檢索網絡適配器和位置信息。  spa

直接貼代碼吧.net

    string GetLanIdentifierData(LanIdentifier lanIdentifier)
      {
          string lanIdentifierData = string.Empty;
          if (lanIdentifier == null)
          {
              return lanIdentifierData;
          }

          if (lanIdentifier.InfrastructureId != null)
          {
              lanIdentifierData += "Infrastructure Type: " + lanIdentifier.InfrastructureId.Type + "\n";
              lanIdentifierData += "Infrastructure Value: ";
              var infrastructureIdValue = lanIdentifier.InfrastructureId.Value;
              foreach (var value in infrastructureIdValue)
              {
                  lanIdentifierData += value + " ";
              }
          }

          if (lanIdentifier.PortId != null)
          {
              lanIdentifierData += "\nPort Type : " + lanIdentifier.PortId.Type + "\n";
              lanIdentifierData += "Port Value: ";
              var portIdValue = lanIdentifier.PortId.Value;
              foreach (var value in portIdValue)
              {
                  lanIdentifierData += value + " ";
              }
          }

          if (lanIdentifier.NetworkAdapterId != null)
          {
              lanIdentifierData += "\nNetwork Adapter Id : " + lanIdentifier.NetworkAdapterId + "\n";
          }
          return lanIdentifierData;
      }

 其中 lanIdentifier.InfrastructureId.Value 就是BSSID了,須要取出來,而且轉爲16進制。code

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

這獲取的就是BSSID了,至少我獲取的值與iPhone獲取的值對比是同樣的。orm

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

但願對您有幫助。

相關文章
相關標籤/搜索