2011-08-25 20 views
3

我有一個需要找出創建連接時使用哪個適配器。換句話說,如果我的機器上有多個NIC卡(即無線,局域網等),哪個卡用於連接?您如何確定使用哪個適配器?

如果任何人都可以在正確的方向點我...

+0

我不知道答案,但它可能有助於看到代碼來創建連接。另外,正在控制網卡的連接使用好嗎? –

+0

你不能強制你的程序使用特定的連接。您應該能夠根據特定適配器是否處於活動狀態來確定它是基於哪個連接。 –

+0

[識別.NET中的活動網絡接口]的可能的重複(http://stackoverflow.com/questions/359596/identifying-active-network-interface-in-net) – Jehof

回答

3

在C#

foreach(var nic in NetworkInterface.GetAllNetworkInterfaces.Where(n => n.OperationalStatus == OperationStatus.UP) 
{ 
    if(nic.GetIsNetworkAvailable()) 
    { 
     //nic is attached to some form of network 
    } 
} 

VB .NET

ForEach nic in NetworkInterface.GetAllNetworkInterfaces.Where(Function(n) n.OperationalStatus = OperationStatus.UP) 
    If nic.GetIsNetworkAvailable() Then 
     //nic is attached to some form of network 
    End If 
Next 

這將只測試連接到活動的網絡主動工作的網絡接口。

+0

正如你注意到的那樣,它只檢查nic是否被附加到某種網絡。我相信http://stackoverflow.com/questions/359596/identifying-active-network-interface-in-net是一個更好的解決方案。 –

0

你爲什麼不使用MAC地址?

0

也許你可以通過MAC地址映射它:

var nics = NetworkInterface.GetAllNetworkInterfaces(); 
foreach (var nic in nics) 
{ 
    if (nic.OperationalStatus == OperationalStatus.Up) 
    { 
     var mac = nic.GetPhysicalAddress().ToString(); 
     if (mac == "your:connections:mac:address") 
     { 
      /* ... */ 
     } 
    } 
} 

「您:連接:MAC:地址」一部分,你可以找出以下這種方法,使用LocalEndPoint的IP地址

How do I obtain the physical (MAC) address of an IP address using C#?

這不是漂亮,但是它可以工作。

相關問題