Is it possible to specify which network interface for a JVM ( or IDE ) to use
Yes, you can specify by following way:
int port= 52000; //some free port
MulticastSocket msocket = new MulticastSocket(port);
msocket.setInterface(InetAddress.getByName("172.16.30.205"));
Where 172.16.30.205
is one of my PC's IP address and I would like to communicate through interface.
java.net.Socket
has a constructor which specifies which local IP address to bind to, and since each network interface gets its own IP address, you can use that.
But getting from a java.net.Socket
to a higher-level protocol (e.g. HTTP) is another matter entirely, but you don't specify what that would be.
I don't know of a JVM-level way of doing this, sadly, just the above programmatic approach.
The NIC used for comms is selected by the operating system depending on the best 'route' available to what ever address is being accessed. There is no way for an application that sits above the NIC drivers to select a specific NIC. You can only get close when you're listening on a port bound at a specific address, which is only applicable if you're running a server.
You could try modifying the 'metric' of the route specific to a NIC to force the OS to prefer it.