2010-11-10 5 views

Répondre

0

Cet article n'est pas un aperçu technique ou une grande discussion. C'est comme une collection de conseils sur la façon dont vous pouvez obtenir l'adresse IP ou le nom d'hôte d'une machine. Dans l'API Win32, cela pourrait être accompli en utilisant l'API NetWork. Et c'est toujours vrai dans le framework .NET. La seule différence est de trouver et de comprendre l'espace de noms et la classe à utiliser pour accomplir cette tâche. Dans le framework .NET, l'API NetWork est disponible dans l'espace de noms System.Net. La classe DNS dans l'espace de noms System.Net peut être utilisée pour obtenir le nom d'hôte d'une machine ou obtenir l'adresse IP si le nom d'hôte est déjà connu. La classe DNS fournit une fonctionnalité de résolution de nom de domaine simple. La classe DNS est une classe statique qui fournit un accès aux informations à partir du système DNS (Internet Domain Name System). Les informations renvoyées incluent plusieurs adresses IP et alias si l'hôte spécifié a plusieurs entrées dans la base de données DNS. La liste est renvoyée sous la forme d'une collection ou d'un tableau d'objets IPAddress. La section suivante est le code qui montre comment obtenir l'adresse IP pour un nom d'hôte donné.

namespace NKUtilities 
{ 
    using System; 
    using System.Net; 

    public class DNSUtility 
    { 
     public static int Main (string [] args) 
     { 

      String strHostName = new String (""); 
      if (args.Length == 0) 
      { 
       // Getting Ip address of local machine... 
       // First get the host name of local machine. 
       strHostName = DNS.GetHostName(); 
       Console.WriteLine ("Local Machine's Host Name: " + strHostName); 
      } 
      else 
      { 
       strHostName = args[0]; 
      } 

      // Then using host name, get the IP address list.. 
      IPHostEntry ipEntry = DNS.GetHostByName (strHostName); 
      IPAddress [] addr = ipEntry.AddressList; 

      for (int i = 0; i < addr.Length; i++) 
      { 
       Console.WriteLine ("IP Address {0}: {1} ", i, addr[i].ToString()); 
      } 
      return 0; 
     }  
    } 
} 

http://www.codeproject.com/Articles/854/How-To-Get-IP-Address-Of-A-Machine

+0

ce lien semble être mort. – Sevki

+0

Le lien ci-dessus parle d'obtenir l'adresse IP. J'ai besoin de l'adresse MAC et non de l'adresse IP. – Vicky

0
NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); 
//for each j you can get the MAC 
PhysicalAddress address = nics[0].GetPhysicalAddress(); 
byte[] bytes = address.GetAddressBytes(); 
for (int i = 0; i < bytes.Length; i++) 
{ 
    // Display the physical address in hexadecimal. 
    Console.Write("{0}", bytes[i].ToString("X2")); 
    // Insert a hyphen after each byte, unless we are at the end of the 
    // address. 
    if (i != bytes.Length - 1) 
    { 
     Console.Write("-"); 
    } 
} 
+1

Selon les docs, NetworkInterface et PhysicalAddress sont pris en charge par le framework compact. – c0D3l0g1c

+1

Comme cela: http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterface_members(v=VS.90).aspx, je vois que ce n'est pas pris en charge dans un cadre compact. Je ne suis pas sûr de savoir à quels documents vous faites référence .. – Vicky

0

Nous pouvons utiliser MDSDK dans ce type de problèmes comme

using PsionTeklogix.Peripherals; 
namespace EnumAdapters 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      ArrayList pList = null; 
      string[] lStatistic = null; 

      try 
      { 
       pList = Peripherals.EnumerateAdapters(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("failed with\r\n" + ex.Message, "EnumerateAdapters()"); 
       Close(); 
       return; 
      } 

      listBox1.Items.Clear(); 

      foreach (string AdapterName in pList) 
      { 
       try 
       { 
        listBox1.Items.Add(AdapterName + (Peripherals.IsAdapterPresent(AdapterName) ? " is present" : " is NOT present") + (Peripherals.IsWirelessAdapter(AdapterName) ? " [wireless adapter] " : "")); 
        lStatistic = Peripherals.GetAdapterStatistics(AdapterName); // See Note 1 
        foreach (string StatInfo in lStatistic) 
        { 
         if (StatInfo.StartsWith("Local MAC Address")) 
         { 
          listBox1.Items.Add("» " + StatInfo); 
          break; 
         } 
        } 
       } 
       catch (Exception ex) 
       { 
        MessageBox.Show(ex.Message); 
        Close(); 
        return; 
       } 
      } 
     } 
    } 
} 
+1

Ceci utilise une bibliothèque spécifique à l'appareil et fonctionnera donc * seulement * avec le périphérique Psion. – ctacke

3

Je sais que ça fait un certain temps, mais il me fallait cela et trouvé que je pouvais utiliser OpenNETCF version du code ci-dessus avec un tweak:

INetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); 
//for each j you can get the MAC 
PhysicalAddress address = nics[0].GetPhysicalAddress(); 
byte[] bytes = address.GetAddressBytes(); 
for(int i = 0; i < bytes.Length; i++) { 
    // Display the physical address in hexadecimal. 
    Console.Write("{0}", bytes[i].ToString("X2")); 
    // Insert a hyphen after each byte, unless we are at the end of the address. 
    if(i != bytes.Length - 1) { 
     Console.Write("-"); 
    } 
} 
Questions connexes