欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

IPUtil工具类,获取本机、远程IP的Java代码,iputil工具类,import java.

来源: javaer 分享于  点击 44387 次 点评:209

IPUtil工具类,获取本机、远程IP的Java代码,iputil工具类,import java.


import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;/** * IP工具类 * @author geeksun * 2011-9-23 */public class IpUtil {    /**     * @param 获取远程IP     * @return IP Address     */    public static String getIpAddrByRequest(HttpServletRequest request) {        String ip = request.getHeader("x-forwarded-for");        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            ip = request.getHeader("Proxy-Client-IP");        }        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            ip = request.getHeader("WL-Proxy-Client-IP");        }        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {            ip = request.getRemoteAddr();        }        return ip;    }    /**     * @return 获取本机IP     * @throws SocketException     */    public static String getRealIp() throws SocketException {        String localip = null;// 本地IP,如果没有配置外网IP则返回它        String netip = null;// 外网IP        Enumeration<NetworkInterface> netInterfaces =             NetworkInterface.getNetworkInterfaces();        InetAddress ip = null;        boolean finded = false;// 是否找到外网IP        while (netInterfaces.hasMoreElements() &amp;&amp; !finded) {            NetworkInterface ni = netInterfaces.nextElement();            Enumeration<InetAddress> address = ni.getInetAddresses();            while (address.hasMoreElements()) {                ip = address.nextElement();                if (!ip.isSiteLocalAddress()                         &amp;&amp; !ip.isLoopbackAddress()                         &amp;&amp; ip.getHostAddress().indexOf(":") == -1) {// 外网IP                    netip = ip.getHostAddress();                    finded = true;                    break;                } else if (ip.isSiteLocalAddress()                         &amp;&amp; !ip.isLoopbackAddress()                         &amp;&amp; ip.getHostAddress().indexOf(":") == -1) {// 内网IP                    localip = ip.getHostAddress();                }            }        }        if (netip != null &amp;&amp; !"".equals(netip)) {            return netip;        } else {            return localip;        }    }}
相关栏目:

用户点评