標籤:
原文: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(如果網路介面卡媒體類型是無線區域網路),或不是為元組 <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 + "\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進位。
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也支援。
希望對您有協助。
Windows Phone擷取WiFi BSSID