一、前言
关于camel-core源码包中org.apache.camel.util.HostUtils主机及本地工具类,主要获取网络接口地址集getNetworkInterfaceAddresses、获取网络地址InetAddress类集getAddresses、获取本地主机名称getLocalHostName、获取本地IP地址getLocalIp等
二、源码说明
package org.apache.camel.util;@b@@b@import java.net.InetAddress;@b@import java.net.NetworkInterface;@b@import java.net.UnknownHostException;@b@import java.util.Enumeration;@b@import java.util.LinkedHashSet;@b@import java.util.Map;@b@import java.util.Map.Entry;@b@import java.util.Set;@b@import java.util.TreeMap;@b@@b@public final class HostUtils@b@{@b@ public static Map<String, Set<InetAddress>> getNetworkInterfaceAddresses()@b@ {@b@ Map interfaceAddressMap = new TreeMap();@b@ try {@b@ ifaces = NetworkInterface.getNetworkInterfaces();@b@ while (ifaces.hasMoreElements()) {@b@ NetworkInterface iface = (NetworkInterface)ifaces.nextElement();@b@@b@ if ((iface.isUp()) && (!(iface.isLoopback())) && (!(iface.isPointToPoint()))) {@b@ String name = iface.getName();@b@ Enumeration ifaceAdresses = iface.getInetAddresses();@b@ while (ifaceAdresses.hasMoreElements()) {@b@ InetAddress ia = (InetAddress)ifaceAdresses.nextElement();@b@@b@ if ((!(ia.isLoopbackAddress())) && (!(ia.getHostAddress().contains(":")))) {@b@ Set addresses = (Set)interfaceAddressMap.get(name);@b@ if (addresses == null)@b@ addresses = new LinkedHashSet();@b@@b@ addresses.add(ia);@b@ interfaceAddressMap.put(name, addresses);@b@ }@b@ }@b@ }@b@ }@b@ }@b@ catch (java.net.SocketException ifaces) {@b@ }@b@ return interfaceAddressMap;@b@ }@b@@b@ public static Set<InetAddress> getAddresses()@b@ {@b@ Set allAddresses = new LinkedHashSet();@b@ Map interfaceAddressMap = getNetworkInterfaceAddresses();@b@ for (Map.Entry entry : interfaceAddressMap.entrySet()) {@b@ Set addresses = (Set)entry.getValue();@b@ if (!(addresses.isEmpty()))@b@ for (InetAddress address : addresses)@b@ allAddresses.add(address);@b@@b@ }@b@@b@ return allAddresses;@b@ }@b@@b@ private static InetAddress chooseAddress()@b@ throws UnknownHostException@b@ {@b@ Set addresses = getAddresses();@b@ if (addresses.contains(InetAddress.getLocalHost()))@b@ {@b@ return InetAddress.getLocalHost(); }@b@ if ((addresses != null) && (!(addresses.isEmpty())))@b@ {@b@ return ((InetAddress[])addresses.toArray(new InetAddress[addresses.size()]))[0];@b@ }@b@@b@ return InetAddress.getLocalHost();@b@ }@b@@b@ public static String getLocalHostName()@b@ throws UnknownHostException@b@ {@b@ return chooseAddress().getHostName();@b@ }@b@@b@ public static String getLocalIp()@b@ throws UnknownHostException@b@ {@b@ return chooseAddress().getHostAddress();@b@ }@b@}