Computer Girl
Computer Girl

Reputation:

Get IP address in a console application

I am looking to figure out what my IP address is from a console application.

I am used to a web application by using the Request.ServerVariables collection and/or Request.UserHostAddress.

How can this be done in a console app?

Upvotes: 19

Views: 22403

Answers (6)

AZ_
AZ_

Reputation: 21899

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

Upvotes: 2

Hannoun Yassir
Hannoun Yassir

Reputation: 21192

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

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

Upvotes: 1

Prithis
Prithis

Reputation: 1033

Try this:

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());    
}

Upvotes: 3

Martin Peck
Martin Peck

Reputation: 11564

The System.Net namespace is your friend here. In particular, APIs such as DNS.GetHostByName.

However, any given machine may have multiple IP addresses (multiple NICs, IPv4 and IPv6 etc) so it's not quite as simple a question as you pose.

Upvotes: 2

Nik
Nik

Reputation: 2726

System.Net.Dns.GetHostAddresses() should do it.

Upvotes: 1

CodeLikeBeaker
CodeLikeBeaker

Reputation: 21312

The easiest way to do this is as follows:

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();
        }
    }
}

Upvotes: 31

Related Questions