2011-08-25 6 views
3

J'ai besoin de savoir quel adaptateur est utilisé lorsqu'une connexion est créée. En d'autres termes, si j'ai plusieurs cartes NIC (c'est-à-dire sans fil, LAN, etc.) sur ma machine, quelle carte est utilisée pour la connexion?Comment déterminez-vous quel adaptateur est utilisé?

Si quelqu'un peut me diriger dans la bonne direction ...

+0

Je n'ai aucune idée de la réponse, mais cela aidera probablement à voir le code pour créer la connexion. Aussi, est le contrôle de la carte réseau que la connexion utilise ok? –

+0

Vous ne serez pas en mesure de forcer votre programme à utiliser une connexion spécifique. Vous devriez être capable de déterminer sur quelle connexion il est basé si un adaptateur particulier est actif. –

+0

duplication possible de [Identification de l'interface réseau active dans .NET] (http://stackoverflow.com/questions/359596/identifying-active-network-interface-in-net) – Jehof

Répondre

3

En 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 

Cela permettra de tester uniquement des interfaces réseau de travail actifs qui sont connectés à un réseau actif.

+0

Comme vous le constatez, seuls les chèques sont joints à un réseau de quelque sorte. Je crois que http://stackoverflow.com/questions/359596/identifying-active-network-interface-in-net est une meilleure solution. –

0

Pourquoi utilisez-vous pas l'adresse MAC?

0

Peut-être que vous pouvez mapper par l'adresse 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") 
     { 
      /* ... */ 
     } 
    } 
} 

Le « votre: Connexions: mac: adresse » partie vous pouvez comprendre suivant cette méthode, en utilisant l'adresse IP du LocalEndPoint.

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

Il est pas beau, mais cela pourrait fonctionner.

Questions connexes