JAVA 获取当前 内网 和 外网 的IP 地址
来源:互联网 发布:linux ant命令行 编辑:程序博客网 时间:2024/04/27 15:24
方法一:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.URL;
public class UserIP {
public static void main(String[] args) throws Exception {
System.out.println("本机的外网IP是:"+UserIP.getWebIP("http://www.ip138.com/ip2city.asp"));
System.out.println("本机的内网IP是:"+UserIP.getLocalIP());
}
/**
* 获取外网地址
* @param strUrl
* @return
*/
public static String getWebIP(String strUrl) {
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("]");
//获取网页中 当前 的 外网IP
webContent = webContent.substring(start,end);
return webContent;
} catch (Exception e) {
e.printStackTrace();
return "error open url:" + strUrl;
}
}
public static String getLocalIP() throws Exception{
String localIP = "";
InetAddress addr = (InetAddress) InetAddress.getLocalHost();
//获取本机IP
localIP = addr.getHostAddress().toString();
return localIP;
}
}
方法二:
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;
public class ExternalIpAddressFetcher {
//外网IP提供者的网址
private String externalIpProviderUrl;
//本机外网IP地址
private String myExternalIpAddress;
public ExternalIpAddressFetcher(String externalIpProviderUrl) {
this.externalIpProviderUrl = externalIpProviderUrl;
String returnedhtml = fetchExternalIpProviderHTML(externalIpProviderUrl);
parse(returnedhtml);
}
private String fetchExternalIpProviderHTML(String externalIpProviderUrl){
// 输入流
InputStream in = null;
// 到外网提供者的Http连接
HttpURLConnection httpConn = null;
try {
// 打开连接
URL url = new URL(externalIpProviderUrl);
httpConn = (HttpURLConnection)url.openConnection();
// 连接设置
HttpURLConnection.setFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
// 获取连接的输入流
in = httpConn.getInputStream();
byte[] bytes=new byte[1024];// 此大小可根据实际情况调整
// 读取到数组中
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead=in.read(bytes, offset,bytes.length-offset)) >= 0) {
offset += numRead;
}
//将字节转化为为UTF-8的字符串
String receivedString=new String(bytes,"UTF-8");
// 返回
return receivedString;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
in.close();
httpConn.disconnect();
} catch (Exception ex) {
ex.printStackTrace();
}
}
// 出现异常则返回空
return null;
}
private void parse(String html){
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);
}
}
//得到本机外网地址,得不到则为空
public String getMyExternalIpAddress() {
return myExternalIpAddress;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ExternalIpAddressFetcher fetcher=new ExternalIpAddressFetcher("http://www.ip138.com/ip2city.asp");
System.out.println(fetcher.getMyExternalIpAddress());
}
}
- JAVA 获取当前 内网 和 外网 的IP 地址
- JAVA 获取当前 内网 和 外网 的IP 地址
- qt获取内网IP、外网IP和Mac地址
- java获取内网ip地址
- php获取外网和内网的ip地址
- 获取路由器的Mac地址和当前的iP地址
- 获取当前访问客户端的真实IP地址,辨别是否为内网?
- Java:获取本机所有IP地址,内网IP
- java中获取当前服务器的Ip地址的方法
- java获取当前用户的IP地址代码
- java中获取当前服务器的Ip地址
- [Asp.Net]获取当前的URL和IP地址
- asp.net获取当前的URL和IP地址 .
- shell和python获取内网ip地址
- 获取当前请求的IP地址
- 获取当前服务器的ip地址
- Java获取本机IP地址(对外的IP地址和局域网的IP地址)
- JAVA获取公网IP地址与内网IP地址方法
- linux 下使用 rsync 进行文件 同步
- SQL替换
- RecycleView初识
- java 数据结构之 顺序存储结构 队列
- 笔记-lua中的for
- JAVA 获取当前 内网 和 外网 的IP 地址
- Erlang行为模式实现模块的首部
- CToolBar
- JavaScript中的原型和继承
- matlab统计一个数组中各元素出现的频数、频率
- NAND and EMMC partition
- 对fork函数理解
- string - strcat源码
- 【C++】求数组中所有元素的排列或组合