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
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With