1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > linux命令获取本机外网公网ip地址 java程序获取本机外网公网ip地址 代码

linux命令获取本机外网公网ip地址 java程序获取本机外网公网ip地址 代码

时间:2018-08-08 01:41:03

相关推荐

linux命令获取本机外网公网ip地址 java程序获取本机外网公网ip地址 代码

linux命令获取本机外网ip地址

1 直接返回ip

最快 稳定

curl :6666

curl

curl

curl /dyndns/getip

慢 或 不稳定(有时无响应)

curl /plain

curl

curl tnx.nl/ip

curl ifconfig.me

2 返回带ip的json

curl /

curl /cityjson

curl /service/getIpInfo.php?ip=myip

curl /

3 返回的页面内容中含ip

curl /json.do?view=myipaddress

curl /static/customercare/yourip.asp

java程序获取本机外网ip地址

import java.io.BufferedReader;import java.io.InputStreamReader;import .URL;import .URLConnection;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** @author:* @create: -11-07 18:11**/public class SelfIpUtil {/*** 外网ip地址*/private static String publicIp;/*** 下面url返回地址都包含ip地址,为防止某个url失效,* 遍历url获取ip地址,有一个能成功获取就返回*/private static String[] urls = {"","","/dyndns/getip","/","/cityjson","/service/getIpInfo.php?ip=myip","/json.do?view=myipaddress","/static/customercare/yourip.asp","/plain","","http://tnx.nl/ip","http://ifconfig.me"};/*** ip地址的匹配正则表达式*/private static String regEx = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)";private static Pattern pattern = pile(regEx);/*** 获取本机外网地址** @return*/public static String getSelfPublicIp() {if (publicIp != null && !"".equals(publicIp.trim())) {return publicIp;}for (String url : urls) {//http访问url获取带ip的信息String result = getUrlResult(url);//正则匹配查找ip地址Matcher m = pattern.matcher(result);while (m.find()) {publicIp = m.group();//System.out.println(url + " ==> " + publicIp);//只获取匹配到的第一个IP地址return publicIp;}}return null;}/*** http访问url*/private static String getUrlResult(String url) {StringBuilder sb = new StringBuilder();BufferedReader in = null;try {URL realUrl = new URL(url);URLConnection connection = realUrl.openConnection();connection.setConnectTimeout(1000);connection.setReadTimeout(1000);in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line;while ((line = in.readLine()) != null) {sb.append(line);}} catch (Exception e) {// System.out.println(e.getMessage());return "";}return sb.toString();}/*** 测试* @param args*/public static void main(String[] args){System.out.println(getSelfPublicIp());}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。