2009-05-13 11 views
16

Ich möchte herausfinden, was meine IP-Adresse von einer Konsolenanwendung ist.IP-Adresse in einer Konsolenanwendung abrufen

Ich bin an eine Webanwendung mit der Request.ServerVariables Sammlung und/oder Request.UserHostAddress gewöhnt.

Wie kann dies in einer Konsolen-App durchgeführt werden?

Antwort

23

Der einfachste Weg, dies zu tun, ist wie folgt:

using System; 
using System.Net; 


namespace ConsoleTest 
{ 
    class Program 
    { 
     static void Main() 
     { 
      String strHostName = string.Empty; 
      // 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); 
      // Then using host name, get the IP address list.. 
      IPHostEntry ipEntry = Dns.GetHostEntry(strHostName); 
      IPAddress[] addr = ipEntry.AddressList; 

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

OK, also ich sehe viele Antworten hier, aber diese scheint leicht zu lesen. Mir gefällt, was Martin Peck über mehrere IP-Adressen gesagt hat, und ich denke, dass ich hier die richtige Lösung finde. Ich habe das lokal ausgeführt und es gab mir, was ich wollte. Ich danke dir sehr! –

+1

Ja, ich stimme Martin zu, du musst auf mehrere IP-Adressen achten. Dieser Code wird damit umgehen und Sie können wählen, was damit von dort zu tun ist. – CodeLikeBeaker

+2

Sie sollten wahrscheinlich einen Link zu der Seite einfügen, von der Sie diesen Code kopiert haben, finden Sie nicht? Ich meine, es ist eines der ersten Ergebnisse bei Google. – Kevin

1
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; 
    }  
} 

Quelle: http://www.codeproject.com/KB/cs/network.aspx

1

System.Net.Dns.GetHostAddresses() sollte es tun.

2

Der System.Net-Namespace ist hier Ihr Freund. Insbesondere APIs wie DNS.GetHostByName.

Jede Maschine kann jedoch mehrere IP-Adressen (mehrere NICs, IPv4 und IPv6 usw.) haben, so dass es nicht so einfach ist, eine Frage zu stellen.

+0

Ich mag Ihren Kommentar für mehrere IP-Adressen. Darauf basierend funktionierte der obige Code sehr gut. Vielen Dank! –

2

Versuchen Sie folgendes:

String strHostName = Dns.GetHostName(); 

Console.WriteLine("Host Name: " + strHostName); 

// Find host by name IPHostEntry 
iphostentry = Dns.GetHostByName(strHostName); 

// Enumerate IP addresses 
int nIP = 0; 
foreach(IPAddress ipaddress in iphostentry.AddressList) { 
    Console.WriteLine("IP #" + ++nIP + ": " + ipaddress.ToString());  
} 
3

IPAddress [] = Address Dns.GetHostAddresses (Dns.GetHostName());

Verwandte Themen