java中获取公网IP
package com.dashan.utils.iputils; import org.apache.commons.lang.StringUtils; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* @author ADMIN
*/
public class IPGWUtil {
// 方法1
private String getNowIP1() throws IOException {
String ip = null;
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");
}
Pattern p = Pattern.compile("\\<dd class\\=\"fz24\">(.*?)\\<\\/dd>");
Matcher m = p.matcher(inputLine.toString());
if (m.find()) {
String ipstr = m.group(1);
ip = ipstr;
}
} finally {
if (in != null) {
in.close();
}
}
if (StringUtils.isEmpty(ip)) {
throw new RuntimeException();
}
return ip;
} // 方法2
private String getNowIP2() throws IOException {
String ip = null;
BufferedReader br = null;
try {
URL url = new URL("https://v6r.ipip.net/?format=callback");
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");
}
webContent = sb.toString();
int start = webContent.indexOf("(") + 2;
int end = webContent.indexOf(")") - 1;
webContent = webContent.substring(start, end);
ip = webContent;
} finally {
if (br != null) {
br.close();
}
}
if (StringUtils.isEmpty(ip)) {
throw new RuntimeException();
}
return ip;
} // 方法3
private String getNowIP3() throws IOException {
String ip = null;
String objWebURL = "https://ip.900cha.com/";
BufferedReader br = null;
try {
URL url = new URL(objWebURL);
br = new BufferedReader(new InputStreamReader(url.openStream()));
String s = "";
String webContent = "";
while ((s = br.readLine()) != null) {
if (s.indexOf("我的IP:") != -1) {
ip = s.substring(s.indexOf(":") + 1);
break;
}
}
} finally {
if (br != null) {
br.close();
}
}
if (StringUtils.isEmpty(ip)) {
throw new RuntimeException();
}
return ip;
} // 方法4
private String getNowIP4() throws IOException {
String ip = null;
String objWebURL = "https://bajiu.cn/ip/";
BufferedReader br = null;
try {
URL url = new URL(objWebURL);
br = new BufferedReader(new InputStreamReader(url.openStream()));
String s = "";
String webContent = "";
while ((s = br.readLine()) != null) {
if (s.indexOf("互联网IP") != -1) {
ip = s.substring(s.indexOf("'") + 1, s.lastIndexOf("'"));
break;
}
}
} finally {
if (br != null) {
br.close();
}
}
if (StringUtils.isEmpty(ip)) {
throw new RuntimeException();
}
return ip;
} // 返回公网地址
public static String findGWIp() {
IPGWUtil ipgwUtil = new IPGWUtil();
String ip = null;
// 第一种方式
try {
ip = ipgwUtil.getNowIP1();
ip.trim();
} catch (Exception e) {
System.out.println("getPublicIP - getNowIP1 failed ~ ");
}
if (!StringUtils.isEmpty(ip)) {
return ip;
}
// 第二种方式
try {
ip = ipgwUtil.getNowIP2();
ip.trim();
} catch (Exception e) {
System.out.println("getPublicIP - getNowIP2 failed ~ ");
}
if (!StringUtils.isEmpty(ip)) {
return ip;
}
// 第三种方式
try {
ip = ipgwUtil.getNowIP3();
ip.trim();
} catch (Exception e) {
System.out.println("getPublicIP - getNowIP3 failed ~ ");
}
if (!StringUtils.isEmpty(ip)) {
return ip;
}
// 第四种方式
try {
ip = ipgwUtil.getNowIP4();
ip.trim();
} catch (Exception e) {
System.out.println("getPublicIP - getNowIP4 failed ~ ");
}
if (!StringUtils.isEmpty(ip)) {
return ip;
}
return ip;
} public static void main(String[] args) {
System.out.println(IPGWUtil.findGWIp());
}
}
java中获取公网IP的更多相关文章
- java中获取远程ip的一个坑
发现在高请求量的时候获取hostName慢,后发现getHostName方法慢导致的:需要获取hostName为获取ip的方式了:java 中 InetSocketAddress // remoteA ...
- JAVA获取公网ip
在ipv4地址稀缺的今天,分配到公网ip几乎是不可能的,但是我拨号之后的ip竟然是公网IP. 将自己的电脑作为服务器·,做点好玩的程序,就成为了可能. 由于运营商的ip是动态分配的公网ip的所以就需要 ...
- Python 之自动获取公网IP
Python 之自动获取公网IP 2017年9月30日 文档下载:https://wenku.baidu.com/view/ff40aef7f021dd36a32d7375a417866fb84ac0 ...
- JAVA中获取当前系统时间及格式转换
JAVA中获取当前系统时间 一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; publi ...
- C#联机获取公网IP
C#获取IP的方式有很多种,这里通过http://www.ipip.net/这个稳定的在线IP库的来获取公网IP. string tempip = "0.0.0.0"; WebRe ...
- Java中获取键盘输入值的三种方法
Java中获取键盘输入值的三种方法 Java程序开发过程中,需要从键盘获取输入值是常有的事,但Java它偏偏就没有像c语言给我们提供的scanf(),C++给我们提供的cin()获取键盘输入值 ...
- JAVA中获取路径
内容来自于snannan_268 关键字: java中获取路径 JAVA中获取路径: 1.jsp中取得路径: 以工程名为TEST为例: (1)得到包含工程名的当前页面全路径:request.get ...
- java中获取日期和时间的方法总结
1.获取当前时间,和某个时间进行比较.此时主要拿long型的时间值. 方法如下: 要使用 java.util.Date .获取当前时间的代码如下 Date date = new Date(); da ...
- JAVA中获取当前系统时间
一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; public class NowStrin ...
- java中获取路径中的空格处理(%20)问题
在java中获取文件路径的时候,有时候会获取到空格,但是在中文编码环境下,空格会变成“%20”从而使得路径错误. 解决办法: String path = Parameter.class.getReso ...
随机推荐
- go语言 包依赖管理-构建完整的依赖项目:目录结构及包的调用
目录结构: <home>/ |-- greetings/ |-- hello/1.分别进入对应目录创建以上目录结构 //bash切换到用户主目录 cd $HOMEPAHT$ //bash新 ...
- jdk-14.0.1环境搭建及cmd环境编译执行
1.安装包获取 https://www.oracle.com/java/technologies/javase/jdk14-archive-downloads.html 2.环境变量配置 最新版本的J ...
- MyBatis foreach循环批量修改数据时报错
报错如下 org.springframework.jdbc.BadSqlGrammarException: ### Error updating database. Cause: java.sql.S ...
- Nuxt.js 生成sitemap站点地图文件
Nuxt.js 生成sitemap站点地图文件 背景介绍 使用nuxt框架生成静态文件支持SEO优化,打包之后需要生成一个 sitemap.xml 文件方便提交搜索引擎进行收录.官网有提供一个插件 ...
- 2023 Visual Studio Code 插件推荐:18 个提高开发效率的常用插件
Visual Studio Code (简称VSCode) 是一款强大的开源代码编辑器,它拥有众多功能强大的扩展插件,使得开发者可以根据自己的需求来定制编辑器的功能和外观.在本文中,我们将分享一些非常 ...
- 【scipy 基础】--傅里叶变换
傅里叶变换是一种数学变换,它可以将一个函数或信号转换为另一个函数或信号,它可以将时域信号转换为频域信号,也可以将频域信号转换为时域信号.在很多的领域都有广泛的应用,例如信号处理.通信.图像处理.计算机 ...
- 八个SVN提交的好习惯(转)
一.提交之前先更新 1. SVN更新的原则是要随时更新,随时提交.当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交. 2. 如果在修改的期间别人也更改了sv ...
- jpa用findAll((Specification<GoodsSpu>) (root, criteriaQuery, criteriaBuilder) -> {})排序
//需要用到的包import org.springframework.data.domain.Page;import org.springframework.data.domain.PageReque ...
- Java基础知识(纯干货)
基础篇 IDEA 开发 Java项目 卸载JDK 删除Java的安装目录 删除JAVA_HOME 删除path下关于java的目录 java -version 安装JDK17 下载链接:https:/ ...
- 一款.NET开源的小巧、智能、免费的Windows内存清理工具 - WinMemoryCleaner
前言 我们在使用Windows系统的时候经常会遇到一些程序不会释放已分配的内存,从而导致电脑变得缓慢.今天给大家推荐一款.NET开源的小巧.智能.免费的Windows内存清理工具:WinMemoryC ...