Question:
When I use InetAdress.getAllByName(String host) on my workstation,
I get two IP addresses. One is for the LAN connection and the other is
for the dialup connection. I need to get the dial up connection's IP
address because the LAN's IP address is only known by the local
network. Is there a way to determine which IP is which? Are they
ordered or something?
Answer:
Unfortunately, the order in which the IP addresses are returned is
platform dependent. You cannot rely on the primary network interface
being listed first all of the time. However, when writing network
client or server applications, if you do not bind to a specific
interface your application will work across both interfaces. If you
have a client application that is already connected, you can always
determine the interface it is on by calling Socket.getLocalAddress().
But if you really need to know which IP address corresponds to which
interface, you can always write some native code or use Runtime.exec()
to execute a local utility such as ifconfig (Unix) and parse the
output.