????在项目中经常会遇到需要获取服务器的IP和本地IP,而我们大部分的服务器都配置在linux上,因此我们的代码必须要实现能够获取linux下服务器及本地ip
????以下为我总结的代码:
?? //取得服务器Ip
?? public static String getSerIp(){
??? ??? String clientIp ="";
??? ??? // 根据网卡取本机配置的IP? 
??? ??? Enumeration<NetworkInterface> allNetInterfaces;? //定义网络接口枚举类? 
??????? try {? 
??????????? allNetInterfaces = NetworkInterface.getNetworkInterfaces();? //获得网络接口? 
??????????? InetAddress ip = null; //声明一个InetAddress类型ip地址? 
??????????? while (allNetInterfaces.hasMoreElements()) //遍历所有的网络接口? 
??????????? {? 
??????????????? NetworkInterface netInterface = allNetInterfaces.nextElement();? 
??????????????? Enumeration<InetAddress> addresses = netInterface.getInetAddresses(); //同样再定义网络地址枚举类? 
??????????????? while (addresses.hasMoreElements())? 
??????????????? {? 
??????????????????? ip = addresses.nextElement();? 
??????????????????? if (ip != null && (ip instanceof Inet4Address)) //InetAddress类包括Inet4Address和Inet6Address? 
??????????????????? {? 
????????????????????? if(!ip.getHostAddress().equals("127.0.0.1")){
??????????????????? ??? ? clientIp= ip.getHostAddress();? 
????????????????????? } 
??????????????????? }?? 
??????????????? }? 
??????????? } 
??????? } catch (SocketException e) {? 
??????????? // TODO Auto-generated catch block? 
??????????? e.printStackTrace();? 
??????? }
??? ??? return clientIp;? 
??? }
?? //获取客户端IP
?? public static String getClientIp() {
??? ??? HttpServletRequest request = getHttpServletRequest();
??? ??? 
??? ??? String accessIP = request.getHeader("X-Forwarded-For");
??? ??? if (accessIP == null || accessIP.length() == 0 || "unknown".equalsIgnoreCase(accessIP)) {
??? ??? ??? accessIP = request.getHeader("Proxy-Client-IP");
??? ??? }
??? ??? if (accessIP == null || accessIP.length() == 0 || "unknown".equalsIgnoreCase(accessIP)) {
??? ??? ??? accessIP = request.getHeader("WL-Proxy-Client-IP");
??? ??? }
??? ??? if (accessIP == null || accessIP.length() == 0 || "unknown".equalsIgnoreCase(accessIP)) {
??? ??? ??? accessIP = request.getRemoteAddr();
??? ??? }
??? ??? if (accessIP == null || accessIP.length() == 0 || "127.0.0.1".equalsIgnoreCase(accessIP)) {
??? ??? ??? try {
??? ??? ??? ??? accessIP = InetAddress.getLocalHost().getHostAddress();
??? ??? ??? } catch (Exception e) {
??? ??? ??? ??? accessIP = "";
??? ??? ??? }
??? ??? ??? 
??? ??? }
??? ??? return accessIP;
??? }
???
原文:http://lafecat.iteye.com/blog/2229184