houstonCYap
houstonCYap

Reputation: 35

Get IP address from hostname in LAN

I found many samples on how to get a hostname by an IP address, how can I get the IP address of a host in the LAN?

Upvotes: 2

Views: 24445

Answers (6)

user2702347
user2702347

Reputation: 21

Here is simple code if you want to get the IP Address(V4) from your pc.

Import this library into your class

using System.Net;

Initialize and declare these variables into your codes. They contain hostname, ipaddress and an array of Host Addresses:

string HostName = Dns.GetHostName().ToString();

IPAddress[] IpInHostAddress = Dns.GetHostAddresses(HostName);

string IPV4Address = IpInHostAddress[1].ToString(); //Default IPV4Address. This might be the ip address you need to retrieve

string IPV6Address = IpInHostAddress[0].ToString(); //Default Link local IPv6 Address

Open your command prompt, just type "ipconfig" and press enter.Once you are done, you could check if the string IPV4Address matches to IPv4Address in our pc.

Upvotes: 2

SerG
SerG

Reputation: 1340

Use Dns.GetHostEntry(hostname) instead of obsolete Dns.GetHostAddresses.

Upvotes: 1

J.K
J.K

Reputation: 2393

Try this

public static void DoGetHostAddresses(string hostname)
{

   IPAddress[] ips;

    ips = Dns.GetHostAddresses(hostname);

    Console.WriteLine("GetHostAddresses({0}) returns:", hostname);

    foreach (IPAddress ip in ips)
    {
        Console.WriteLine("    {0}", ip);
    }
}

i got this from http://msdn.microsoft.com/en-us/library/system.net.dns.gethostaddresses.aspx

Upvotes: 4

mtijn
mtijn

Reputation: 3678

you could use the windows management classes to do this, it also works for remote machines that are in the same domain (but I don't know if they need to enable or disable any security or policy settings for this to work). for example:

public List<NetworkAdapter> GetAdapterList()
{
    ManagementClass mgmt = new ManagementClass("Win32_NetworkAdapterConfiguration ");
    ManagementObjectCollection moc = mgmt.GetInstances();
    List<NetworkAdapter> adapters = new List<NetworkAdapter>();

    // Search for adapters with IP addresses
    foreach(ManagementObject mob in moc)
    {
        string[] addresses = (string[])mob.Properties["IPAddress"].Value;
        if (null == addresses)
        {
            continue;
        }

        NetworkAdapter na = new NetworkAdapter();
        na.Description = (string) mob.Properties["Description"].Value;
        na.MacAddress = (string) mob.Properties["MACAddress"].Value;
        na.IPAddresses = addresses;
        adapters.Add(na);
    }
    return adapters;
}

and to access a remote machine create the management class like this instead:

ManagementClass mgmt = new ManagementClass
    (\\\\servername\\root\\cimv2:Win32_NetworkAdapterConfiguration);

this approach may get you more IPs than just the ones that have been registered in the DNS.

Upvotes: 0

Maciej
Maciej

Reputation: 7961

As long as you know the name of a machine, you can use Dns.GetHostAddresses. Your network DNS should recognize it as LAN computer and return proper IP.

Upvotes: 1

JleruOHeP
JleruOHeP

Reputation: 10386

Here is an excellent example of how it is doing: http://www.codeproject.com/Articles/854/How-To-Get-IP-Address-Of-A-Machine

Upvotes: 0

Related Questions