获取对外的IP地址


通过http请求从网站中取出ip字段。例如:http://ip.chinaz.com/,通过这个网址,加上简单的正则表达式,即可得到。


/** 
	* @Description: Java获取本机在外网的IP地址
	* 调用http://www.ip138.com/ip2city.asp的接口,获取计算机在外网对应的IP地址
	* @date: 2017年6月25日 下午5:12:27
	* @修改备注: 
	*/
	public static String getWebIp(String strUrl) {
		  strUrl = "http://www.ip138.com/ip2city.asp";
		  try {
			   URL url = new URL(strUrl);
			   BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
			   String s = "";
			   StringBuffer sb = new StringBuffer("");
			   String webContent = "";
			   while ((s = br.readLine()) != null) {
			    sb.append(s + "\r\n");
			   }
			   br.close();
			   webContent = sb.toString();
			   int start = webContent.indexOf("[")+1;
			   int end = webContent.indexOf("]");
			   webContent = webContent.substring(start,end);
			   System.out.println(webContent);
			   return webContent;
		  } catch (Exception e) {
			   e.printStackTrace();
			   return "error open url:" + strUrl;
		  }
	}



/** 
	* @Description: Java获取本机在外网的IP地址
	* 调用http://ip.chinaz.com的接口,获取计算机在外网对应的IP地址
	* @date: 2017年6月25日 下午5:12:27
	* @修改备注: 
	*/
	public static String getIPV4Address(){
		String ipv4 = "";
		String chinaz = "http://ip.chinaz.com";
		
		StringBuilder inputLine = new StringBuilder();
		String read = "";
		URL url = null;
		HttpURLConnection urlConnection = null;
		BufferedReader in = null;
		try {
			url = new URL(chinaz);
			urlConnection = (HttpURLConnection) url.openConnection();
		    in = new BufferedReader( new InputStreamReader(urlConnection.getInputStream(),"UTF-8"));
			while((read=in.readLine())!=null){
				inputLine.append(read+"\r\n");
			}
			//System.out.println(inputLine.toString());		//输出http://ip.chinaz.com网页详细信息
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			if(in!=null){
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		
		Pattern p = Pattern.compile("\\<dd class\\=\"fz24\">(.*?)\\<\\/dd>");
		Matcher m = p.matcher(inputLine.toString());
		if(m.find()){
			String ipstr = m.group(1);
			ipv4 = ipstr;
			System.out.println("ipstr::"+ipstr);
			System.out.println("ipv4::"+ipv4);
		}
		return ipv4;
	}



获取计算机在局域网的IP地址:

/** 
	* @Description: 获取本机在局域网中的IP地址
	* @date: 2017年6月6日 下午3:18:56
	* @修改备注: 
	*/
	public static void get_LAN_IP(){
		try{ 
			System.out.println("本机的IP = " + InetAddress.getLocalHost().toString());
		} catch (UnknownHostException e){ 
			e.printStackTrace();
		}
	}