2011-03-01 59 views
1

我的應用程序使用Web服務。我從什麼工作站的請求控制,併爲此發送MAC地址如何參數的所有方法。但後來我開始真正測試應用程序,我發現工作站有很多網絡適配器 - 以太網,無線,藍牙。當我使用下面的代碼獲取MAC地址:機器上的許多網絡適配器,需要找到一個用於Windows流量(來自.net)的網絡適配器

var networkAdapters = NetworkInterface.GetAllNetworkInterfaces(); 
if (networkAdapters == null || networkAdapters.Length == 0) 
    return string.Empty; 

string address = string.Empty; 

foreach (var adapter in networkAdapters) 
{ 
    var a = adapter.GetPhysicalAddress(); 
    if (a != null && a.ToString() != string.Empty) 
    { 
     address = a.ToString(); 
     break; 
    } 
} 
return address; 

有時,網絡服務從工作站不同的MAC-地址接受,但我希望得到永遠只有一個MAC地址。請幫幫我。

+0

檢查這個我們真的得到了問題的癥結所在位置 - 即MAC地址是*不*單身了 - 多個NIC是一個規律性的現象。您需要一個替代系統來獲得許可,而不是MAC。工作站密鑰或證書。 – stephbu 2011-03-01 08:31:16

回答

0

如果我有兩個不同的以太網卡 - 兩個不同的MAC地址 - 哪個MAC地址是正確的地址?

回答這是回答這個問題的根源。你必須創建算法來選擇正確的選擇 - 有很多的工具在手,讓您更加挑剔:

  1. GetIsNetworkAvailable==true - 標識與活動連接
  2. Speed唯一的接口 - 可讓您用於最快連接的探針
  3. NetworkInterfaceType eg以太網

即使有了這些規則,多個適配器仍然可以匹配。例如一臺具有多個NIC的計算機綁定到同一個局域網。只有你可以確定打破破壞者的規則。

+0

好的,爲了您的最佳理解 - 我正在使用MAC地址進行安全檢查,計數客戶端的系統許可。在Web服務端,可以連接到服務的數據庫寫入列表MAC地址中,一臺機器必須由一個MAC地址標識,但從服務端接收到許多網絡適配器的機器的實際MAC地址可能不同,是什麼給我造成了問題。 – viko 2011-03-01 08:18:47

+0

兩個想法,MAC地址是用戶可欺騙的 - 雖然它會阻止併發使用(兩個NIC不能同時使用MAC,但不會阻止MAC地址重用)。您仍然被抓住有多個合法的路徑,例如筆記本電腦上的無線和以太網適配器。 – stephbu 2011-03-01 08:22:41

0

您知道您的應用程序用於Web服務的IP地址,對嗎?恰好一個適配器將具有此IP地址。

Ypou可以通過GetIPProperties>UnicastAddresses

+0

如果MAC地址是許可證數量,並且我有便攜式電腦,它具有:a)在擴展塢中的以太網網卡,b)無線網卡,它可以設想處於四種狀態 - 沒有MAC,MAC a,MAC b或MAC a + MAC b。我的許可證會用於我的筆記本電腦嗎? – stephbu 2011-03-01 08:29:24

+0

通過以太網連接時,MAC a。通過Wifi連接時,MAC b。第一個狀態(沒有MAC)意味着你根本沒有連接,所以許可證計數是無關緊要的。 – MSalters 2011-03-01 08:37:09

+0

OP正在使用MAC地址分配許可證 - 所以我們的筆記本電腦需要註冊兩個MAC地址。 OP當前系統不支持 - 他(錯誤地)認爲所有PC都有一個MAC地址。 – stephbu 2011-03-01 15:00:51

相關問題