Creating InetAddress object in Java
JavaIpJava Problem Overview
I am trying to convert an address specified by an IP number or a name, both in String (i.e. localhost
or 127.0.0.1
), into an InetAdress object. There's no constructor but rather static methods that return an InetAddress. So if I get a host name it's not a problem, but what if I get the IP number? There's one method that gets byte[] but I'm not sure how that can help me. All other methods gets the host name.
Java Solutions
Solution 1 - Java
You should be able to use getByName or getByAddress.
> The host name can either be a machine > name, such as "java.sun.com", or a > textual representation of its IP > address
InetAddress addr = InetAddress.getByName("127.0.0.1");
The method that takes a byte array can be used like this:
byte[] ipAddr = new byte[]{127, 0, 0, 1};
InetAddress addr = InetAddress.getByAddress(ipAddr);
Solution 2 - Java
From the API for InetAddress
> The host name can either be a machine > name, such as "java.sun.com", or a > textual representation of its IP > address. If a literal IP address is > supplied, only the validity of the > address format is checked.
Solution 3 - Java
ip = InetAddress.getByAddress(new byte[] {
(byte)192, (byte)168, (byte)0, (byte)102}
);
Solution 4 - Java
InetAddress.getByName also works for ip address.
From the JavaDoc
> The host name can either be a machine > name, such as "java.sun.com", or a > textual representation of its IP > address. If a literal IP address is > supplied, only the validity of the > address format is checked.
Solution 5 - Java
The api is fairly easy to use.
// Lookup the dns, if the ip exists.
if (!ip.isEmpty()) {
InetAddress inetAddress = InetAddress.getByName(ip);
dns = inetAddress.getCanonicalHostName();
}
Solution 6 - Java
InetAddress class can be used to store IP addresses in IPv4 as well as IPv6 formats. You can store the IP address to the object using either InetAddress.getByName()
or InetAddress.getByAddress()
methods.
In the following code snippet, I am using InetAddress.getByName()
method to store IPv4 and IPv6 addresses.
InetAddress IPv4 = InetAddress.getByName("127.0.0.1");
InetAddress IPv6 = InetAddress.getByName("2001:db8:3333:4444:5555:6666:1.2.3.4");
You can also use InetAddress.getByAddress()
to create object by providing the byte array.
InetAddress addr = InetAddress.getByAddress(new byte[]{127, 0, 0, 1});
Furthermore, you can use InetAddress.getLoopbackAddress()
to get the local address and InetAddress.getLocalHost()
to get the address registered with the machine name.
InetAddress loopback = InetAddress.getLoopbackAddress(); // output: localhost/127.0.0.1
InetAddress local = InetAddress.getLocalHost(); // output: <machine-name>/<ip address on network>
Note- make sure to surround your code by try/catch because InetAddress
methods return java.net.UnknownHostException
Solution 7 - Java
This is a project for getting IP address of any website , it's usefull and so easy to make.
import java.net.InetAddress;
import java.net.UnkownHostExceptiin;
public class Main{
public static void main(String[]args){
try{
InetAddress addr = InetAddresd.getByName("www.yahoo.com");
System.out.println(addr.getHostAddress());
}catch(UnknownHostException e){
e.printStrackTrace();
}
}
}