`
提烟而过
  • 浏览: 116090 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java 获取服务器IP,本地IP

阅读更多

以前把程式发布的Server IP都写成一个IP-Config 文件中。 为了避免发布程式每次去更改IP-Config ,或是在不同Server上发布程式更改IP-Config。决定把IP-Config 的MXL中的信息融入到JAVA程式中。即自动获取取服务器IP。看了很多function,比如

String serverIP = ServletActionContext.getRequest().getServerName(); 
String serverIP  = request.getLocalAddr();

 等方法,获取的都是127.0.0.1/loaclhost这样让人无奈的地址,比较推荐以下两个function,简单易懂:而且做过测试,在Apache反向代理,多Server的负载均衡(轮询),等都可正常运行。

 public String  getServerIp(){
    	try {
			Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces();
			InetAddress ip = null;
			while (netInterfaces.hasMoreElements()) {
				NetworkInterface ni = (NetworkInterface) netInterfaces
						.nextElement();
				ip = (InetAddress) ni.getInetAddresses().nextElement();
				SERVER_IP = ip.getHostAddress();
				if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress()
						&& ip.getHostAddress().indexOf(":") == -1) {
					SERVER_IP = ip.getHostAddress();
					break;
				} else {
					ip = null;
				}
			}
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    
      return SERVER_IP;
    }

 

public static String getLocalIP(){   
		InetAddress addr = null;   
		            try {
						addr = InetAddress.getLocalHost();
					} catch (UnknownHostException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}   
		        
		        byte[] ipAddr = addr.getAddress();   
		        String ipAddrStr = "";   
		        for (int i = 0; i < ipAddr.length; i++) {   
		            if (i > 0) {   
		                ipAddrStr += ".";   
		            }   
		            ipAddrStr += ipAddr[i] & 0xFF;   
		        }   
		        //System.out.println(ipAddrStr);   
		                return ipAddrStr;   
		}  

 

分享到:
评论
2 楼 zklarry 2015-07-13  
本机IP还不是127.0.0.1,还不如是一句话呢。整这么复杂。
1 楼 zean 2014-05-28  
如果是多网卡呢,怎知道是哪一个?

相关推荐

Global site tag (gtag.js) - Google Analytics