Some doubts about how to retrieve multiple IP addresses (if I have more than one network card) in Java?
ip-address, java, networking
Solution
No, it's not a problem, it's simply an output that consists of hostname and IP (`hostname/ip`). A detail that you might want to read up: The method `toString()` in the class `InetAddress` is implemented to return this format.
The following code will list all IP addresses for each of the interfaces in your system (and also stores them in a list that you could then pass on etc...):
public static void main(String[] args) throws InterruptedException, IOException
{
List<String> allIps = new ArrayList<String>();
Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces();
while (e.hasMoreElements())
{
NetworkInterface n = e.nextElement();
System.out.println(n.getName());
Enumeration<InetAddress> ee = n.getInetAddresses();
while (ee.hasMoreElements())
{
InetAddress i = ee.nextElement();
System.out.println(i.getHostAddress());
allIps.add(i.getHostAddress());
}
}
}
The method `boolean isLoopbackAddress()` allows you to filter the potentially unwanted loopback addresses.
The returned `InetAddress` is either a `Inet4Address` or a `Inet6Address`, using the `instanceof` you can figure out if the returned IP is IPv4 or IPv6 format.
Problem
I have the following 2 problems in retrieving the ip of a client. I have create the following code inside a class: ``` private static InetAddress thisIp; static{ try { thisIp = InetAddress.getLocalHost(); System.out.println("MyIp is: " + thisIp); } catch(UnknownHostException ex) { } } ``` My problems are: 1) The previous code should retrieve the IP address of a client, when I execute it it print the following message: MyIp is: andrea-virtual-machine/127.0.1.1 Why it begin with andrea-virtual-machine/ ? (I am developing on a virtual machine), is it a problem? 2) In this way I can retrieve only a single IP address but I could have more than a single network card so I could have more than a single IP address but multiple IP addresses What can I do to handle this situation? I want put all the multiple IP addresses into an ArrayList Tnx Andrea