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
11
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 }