This article helps you understand InetAddress- a fundamental class in Java Network API.

The InetAddress class represents an IP address, both IPv4 and IPv6. Basically you create instances of this class to use with other classes such as Socket, ServerSocket, DatagramPacket and DatagramSocket. In the simplest case, you can use this class to know the IP address from a hostname, and vice-versa.

The InetAddress class doesn’t have public constructors, so you create a new instance by using one of its factory methods:

  • getByName(String host): creates an InetAddress object based on the provided hostname.
  • getByAddress(byte[] addr): returns an InetAddress object from a byte array of the raw IP address.
  • getAllByName(String host): returns an array of InetAddress objects from the specified hostname, as a hostname can be associated with several IP addresses.
  • getLocalHost(): returns the address of the localhost.

 

To get the IP address/hostname you can use a couple of methods below:

  • getHostAddress(): returns the IP address in text.
  • getHostname(): gets the hostname.

 

Note that the InetAddress class’s toString() method returns both hostname and IP address, e.g. www.codejava.net/198.57.151.22.

In addition, this class also provides several methods for checking the address type, which would be useful for system programmers. However we don’t have to concern about those methods, most of the time.

 

Let’s see some examples that demonstrate how to use the InetAddress class.

 

Get IP address of a given domain/hostname:

The following code prints the IP address of a given hostname:

InetAddress address1 = InetAddress.getByName("www.codejava.net");
System.out.println(address1.getHostAddress());

 

Get hostname from IP address:

The following code finds out the hostname from an IP address:

InetAddress address2 = InetAddress.getByName("8.8.8.8");
System.out.println(address2.getHostName());

 

List all IP addresses associate with a hostname/domain:

The following code prints all the IP addresses associated with the hostname google.com:

InetAddress[] google = InetAddress.getAllByName("google.com");

for (InetAddress addr : google) {
	System.out.println(addr.getHostAddress());
}

 

Get the localhost address:

And the following code gets the localhost address:

InetAddress localhost = InetAddress.getLocalHost();
System.out.println(localhost);

 

Inet4Address and Inet6Address:

These are subclasses of the InetAddress class. Inet4Address and Inet6Address represent IPv4 and IPv6 addresses, respectively. However, when writing network applications, you don’t have to concern about IPv4 or IPv6 as Java hides all the details.

The InetAddress can refer to either Inet4Address or Inet6Address so most of the time, using InetAddress is enough.

 

References:

InetAddress Class Javadoc

 

Related Java Network Tutorials:

 

Other Java network tutorials:


About the Author:

is certified Java programmer (SCJP and SCWCD). He began programming with Java back in the days of Java 1.4 and has been passionate about it ever since. You can connect with him on Facebook and watch his Java videos on YouTube.



Add comment

   


Comments 

#3Jaiswal Pankaj2021-04-29 01:57
C Programming Tutorial for Beginner with Free Certification
Quote
#2Nam2020-08-25 09:15
Could you explain why, jone?
Quote
#1jone2020-08-24 11:22
please add toString and equals methods :)
Quote