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