2013-12-16 95 views
1

我正在嘗試查找可用「Wi_Fi」在此區域中的MAC地址,但我收到錯誤的MAC地址(至少我確信這裏有1個接入點MAC地址,知道與我收到的東西不一樣)。接收到的可用WiFi網絡的MAC地址不正確

我的代碼是:

 char MAC[64]; 

     int len=sizeof(MAC)/sizeof(int); 
     int i; 
      for(i=1;i<len;i++){ 
      MyScanResults = WFScanList(i); 
      //unsigned long long testMac =MyScanResults.bssid[i]; 
      unsigned char* pTestMac = (unsigned char*)&MyScanResults.bssid[i]; 
      sprintf(MAC, "%02x:%02x:%02x:%02x:%02x:%02x", 
      (unsigned)pTestMac[6], 
      (unsigned)pTestMac[5], 
      (unsigned)pTestMac[4], 
      (unsigned)pTestMac[3], 
      (unsigned)pTestMac[2], 
      (unsigned)pTestMac[1] 
      ); 

和我預期的答案是:

BSSID:00:12:17:6:F4:36

但每次我接收一些像這樣的地址,有時候這個地址也會改變:

MAC:73:6D:65:36:F4:C6

我也改變了電話號碼,但沒有... 的順序是有沒有人告訴我哪裏是我的問題嗎? 謝謝 關注

+0

呃,你知道C數組索引從0開始,對吧?因爲你的代碼使它看起來像你沒有。 – unwind

+0

是的,但是當我把1的盾牌解開連接並且不掃描任何網絡 – J2015

+0

那麼,F4:36在那裏,但是有一個地方,(你的狡猾索引?),並且相反。第一個字節似乎被覆蓋?子串'sme6'對你來說意味着什麼? –

回答

1

您的代碼沒有多大意義。

您致電MyScanResults = WFScanList(i);之前甚至宣佈i。此外,從1循環和索引是非常可疑的。

我也覺得使用i整個都很奇怪,計算一個指針變成MyScanResults.bssid,有效地切片,不可能是正確的。

我覺得你的循環應該是這樣的:

for(i=0; i < WFNetworkFound; i++) 
{ 
    const tWFNetwork myScanResults = WFScanList(i); 
    sprintf(MAC, "%02x:%02x:%02x:%02x:%02x:%02x", 
     myScanResult.ssid[0], 
     myScanResult.ssid[1], 
     myScanResult.ssid[2], 
     myScanResult.ssid[3], 
     myScanResult.ssid[4], 
     myScanResult.ssid[5]); 

這裏假設你已經運行掃描已經使全局變量WFNetworkFound已更新。它還假定你使用的是openPicus,所以我從中選擇了一兩個東西的this reference code是有效的。

+0

我的源代碼中的序列是正確的,但在這裏我犯了錯誤。當它從0開始時,代碼不會顯示任何輸出。 – J2015

+0

非常感謝。只需將「myScanResult.ssid [..]」替換爲「(unsigned)pTestMac []」,我就可以得到正確的結果。 – J2015

相關問題