title: How to Determine Internet Network Interface in Java
body: <p>How do you determine which network interface is connected to the internet using Java? For example, I run</p>
  
  <pre><code>InetAddress.getLocalHost().getHostAddress();
  </code></pre>
  
  <p>and within Eclipse this returns exactly what I intend, 192.168.1.105. However, if I package this into a jar file and run the program, the code returns 169.254.234.50. Looking into this, I found this is the IP address of a VMware Virtual Ethernet Adapter interface on my machine.</p>
  
  <p>Is there any way to determine the interface connected to the internet, yet at the same time maintain portability for my code?</p>
  
  <p><strong>Comparison of Interfaces</strong></p>
  
  <p><em>Interface [net4]</em></p>
  
  <pre><code>display name  : Intel(R) Centrino(R) Ultimate-N 6300 AGN
  MTU           : 1500
  loopback      : false
  point to point: false
  up            : true
  virtual       : false
  multicast     : true
  HW address    : 00 24 D7 2C 5F 70 
  INET address (IPv4): 192.168.1.105
    host name           : MyComputer
    canonical host name : MyComputer
    loopback            : false
    site local          : true
    any local           : false
    link local          : false
    multicast           : false
    reachable           : true
  </code></pre>
  
  <p><em>Interface [eth5]</em></p>
  
  <pre><code>display name  : VMware Virtual Ethernet Adapter for VMnet1
  MTU           : 1500
  loopback      : false
  point to point: false
  up            : true
  virtual       : false
  multicast     : true
  HW address    : 00 50 56 C0 00 01 
  INET address (IPv4): 169.254.234.50
    host name           : MyComputer
    canonical host name : MyComputer
    loopback            : false
    site local          : false
    any local           : false
    link local          : true
    multicast           : false
    reachable           : true
  </code></pre>
  
  <p>There's a third VMware interface with site local=true and link local=false, so those fields aren't any help either.</p>