Java程序获取外部IP地址的方法
"Java程序获取外部(公网)IP地址的方法" 在Java编程中,获取外网IP地址通常是为了确定一个设备在互联网上的唯一标识。这个过程涉及到网络通信和字符串解析。以下是一个Java类`ExternalIpAddressFetcher`的实现,用于获取外部IP地址: ```java package com.ljq.action; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; / * 获取外网IP地址 * 使用http://checkip.dyndns.org/提供的服务获取当前的公网IP地址 * @author Administrator */ public class ExternalIpAddressFetcher { // IP提供者URL private String externalIpProviderUrl; // 我的外部IP地址 private String myExternalIpAddress; public ExternalIpAddressFetcher(String externalIpProviderUrl) { this.externalIpProviderUrl = externalIpProviderUrl; String returnedHtml = fetchExternalIpProviderHTML(externalIpProviderUrl); parse(returnedHtml); } / * 从指定URL获取HTML内容,该内容包含外部IP地址 * 例如:http://checkip.dyndns.org/返回的HTML为: * <html><head><title>CurrentIPCheck</title></head><body>CurrentIPAddress:123.147.226.222</body></html> * @param externalIpProviderUrl * @return */ private String fetchExternalIpProviderHTML(String externalIpProviderUrl) { // 输入流 InputStream in = null; // 创建HttpURLConnection对象 HttpURLConnection httpConn = null; try { // 创建URL对象 URL url = new URL(externalIpProviderUrl); // 连接到指定URL httpConn = (HttpURLConnection) url.openConnection(); // 读取输入流 in = httpConn.getInputStream(); // 读取并返回HTML内容 // ... } catch (MalformedURLException e) { // 处理URL错误 // ... } catch (IOException e) { // 处理IO异常 // ... } finally { // 关闭资源 if (in != null) { try { in.close(); } catch (IOException e) { // ... } } if (httpConn != null) { httpConn.disconnect(); } } return ""; // 返回HTML内容 } / * 解析返回的HTML,从中提取IP地址 * 使用正则表达式匹配IP地址 * @param html */ private void parse(String html) { // 定义IP地址的正则表达式 String regex = "(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})"; // 创建Pattern对象 Pattern pattern = Pattern.compile(regex); // 创建Matcher对象 Matcher matcher = pattern.matcher(html); // 查找匹配的IP地址 if (matcher.find()) { // 获取第一个匹配的IP地址 myExternalIpAddress = matcher.group(1); } } // 其他方法,如获取IP地址等 } ``` 这个类首先定义了获取IP地址的URL(`externalIpProviderUrl`),然后通过`fetchExternalIpProviderHTML`方法连接到该URL并获取HTML响应。响应内容通常包含一个简单的HTML结构,其中IP地址以纯文本形式存在。`parse`方法使用正则表达式来匹配IP地址,并将其存储在`myExternalIpAddress`字段中。 在这个例子中,使用了`http://checkip.dyndns.org`作为IP提供者,但请注意,这只是一个示例,实际应用中可能需要根据可用的服务或需求进行调整。 获取外网IP地址的过程可能受到网络状况、服务器响应时间、以及目标网站策略的影响。因此,处理异常和错误情况是必不可少的,例如网络连接失败、超时或目标网站更改其返回格式等。在实际开发中,需要对这些情况进行充分的测试和异常处理。
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 获取本机外网IP地址
* 思想是访问网站http://checkip.dyndns.org/,得到返回的文本后解析出本机在外网的IP地址
* @author Administrator
*
*/
public class ExternalIpAddressFetcher {
// 外网IP提供者的网址
private String externalIpProviderUrl;
// 本机外网IP地址
private String myExternalIpAddress;
public ExternalIpAddressFetcher(String externalIpProviderUrl) {
this.externalIpProviderUrl = externalIpProviderUrl;
String returnedhtml = fetchExternalIpProviderHTML(externalIpProviderUrl);
parse(returnedhtml);
}
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- ExtJS 2.0 入门教程与开发指南
- 基于TMS320F2812的能量回馈调速系统设计
- SIP协议详解:RFC3261与即时消息RFC3428
- DM642与CMOS图像传感器接口设计与实现
- Windows Embedded CE6.0安装与开发环境搭建指南
- Eclipse插件开发入门与实践指南
- IEEE 802.16-2004标准详解:固定无线宽带WiMax技术
- AIX平台上的数据库性能优化实战
- ESXi 4.1全面配置教程:从网络到安全与实用工具详解
- VMware ESXi Installable与vCenter Server 4.1 安装步骤详解
- TI MSP430超低功耗单片机选型与应用指南
- DOS环境下的DEBUG调试工具详细指南
- VMware vCenter Converter 4.2 安装与管理实战指南
- HP QTP与QC结合构建业务组件自动化测试框架
- JsEclipse安装配置全攻略
- Daubechies小波构造及MATLAB实现