JAVA 获取当前 内网 和 外网 的IP 地址

方法一:

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());
}


}

版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值