* 获取本机外网IP地址。
* 实现方法是访问网站http://1212.ip138.com/ic.asp,
* 得到返回的文本后解析出本机在外网的IP地址。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 获取本机外网IP地址。 * 实现方法是访问网站http://1212.ip138.com/ic.asp, * 得到返回的文本后解析出本机在外网的IP地址。 * * @author cyn * */ public class ExternalIpAddressFetcher { // 本机外网IP地址 private String myExternalIpAddress; public ExternalIpAddressFetcher(String externalIpProviderUrl) { fetchExternalIpProviderHTML(externalIpProviderUrl); } /** * 从http://checkip.dyndns.org返回的字符串中通过正则表达式提取外网ip * * @param externalIpProviderUrl * @return */ private String fetchExternalIpProviderHTML(String externalIpProviderUrl) { // 输入流 InputStream ins = null; // 到外网提供者的Http连接 URLConnection httpConn = null; try { // 打开连接 URL url = new URL(externalIpProviderUrl); httpConn = url.openConnection(); ins = httpConn.getInputStream(); InputStreamReader isReader = new InputStreamReader(ins, "GB2312"); BufferedReader bReader = new BufferedReader(isReader); StringBuffer webContent = new StringBuffer(); String str = null; while ((str = bReader.readLine()) != null) { if (parse(str)) { webContent.append(str); break; } } // 返回 return webContent.toString(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { ins.close(); } catch (Exception ex) { ex.printStackTrace(); } } // 出现异常则返回空 return null; } /** * 使用正则表达式解析返回的HTML文本,得到本机外网地址 * * @param html */ private boolean parse(String html) { boolean ret = false; Pattern pattern = Pattern.compile("(\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})[.](\\d{1,3})", Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(html); while (matcher.find()) { myExternalIpAddress = matcher.group(0); ret = true; break; } return ret; } /** * 得到本机外网地址,得不到则为空 * * @return */ public String getMyExternalIpAddress() { return myExternalIpAddress; } public static void main(String[] args) { ExternalIpAddressFetcher fetcher = new ExternalIpAddressFetcher("http://1212.ip138.com/ic.asp"); System.out.println(fetcher.getMyExternalIpAddress()); } }