????在项目中经常会遇到需要获取服务器的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