View Javadoc
1   package us.codecraft.webmagic.utils;
2   
3   import java.net.Inet6Address;
4   import java.net.InetAddress;
5   import java.net.NetworkInterface;
6   import java.net.SocketException;
7   import java.util.Enumeration;
8   
9   /**
10   * @author code4crafer@gmail.com
11   * @since 0.5.0
12   */
13  public abstract class IPUtils {
14  
15      public static String getFirstNoLoopbackIPAddresses() throws SocketException {
16  
17          Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
18  
19          InetAddress localAddress = null;
20          while (networkInterfaces.hasMoreElements()) {
21              NetworkInterface networkInterface = networkInterfaces.nextElement();
22              Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
23              while (inetAddresses.hasMoreElements()) {
24                  InetAddress address = inetAddresses.nextElement();
25                  if (!address.isLoopbackAddress() && !Inet6Address.class.isInstance(address)) {
26                      return address.getHostAddress();
27                  } else if (!address.isLoopbackAddress()) {
28                      localAddress = address;
29                  }
30              }
31          }
32  
33          return localAddress.getHostAddress();
34      }
35  
36  }