Hmmmm... I'm not sure that I get the point of this question... and not sure that this question belongs in "Distributed Java"...
First, why would you need to find "available" IP addresses on the network? In most cases, all a computer needs is simply *an* available IP address, and usually this is handled by calling a router using
DHCP to assign an IP address to the computer dynamically. Mostly DHCP just assigns the next available IP (between certain bounds) to the callers in order. This is very useful for "public access" situations - like a wireless access point in a
coffee shop or library. Some routers also allow you to specify rules like "this MAC always gets this IP address" in addition to the default of "next available IP" - allowing you to set up a file or print server, etc. that always maps to a certain IP on the network.
However, DHCP lookup is handled in the guts of the OS code - this is pretty much always going to run before the JVM even gets a chance to start. As far as I know, there's no
Java code written to use the DHCP protocol (though, since it's just a protocol written on top of TCP/IP, one could certainly write it - it's just that there really doesn't seem to be any use to do so...)