精华内容
下载资源
问答
  • Java获取外网IP
    2017-08-29 09:17:07
    现在网上有好多获取外网IP的方法,其实就是访问一个查询IP的网站,然后截取IP,但是那些地址都过期了,我重新找了一个新的地址,亲测可用。
    http://1212.ip138.com/ic.asp


    public static String getWebIp() {
            try {


                URL url = new URL("http://1212.ip138.com/ic.asp");


                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("]");
                webContent = webContent.substring(start,end);


                return webContent;


            } catch (Exception e) {
                e.printStackTrace();
                return "error";


            }
        }
    更多相关内容
  • java获取外网ip

    热门讨论 2012-07-03 16:08:27
    java获取外网
  • java获取本机外网ip

    2015-08-13 20:23:06
    通过url链接到一个网址,该网址返回自己的ip地址(通过代理服务器访问)
  • java获取当前主机的外网ip,简单方便。
  • 你遇到过本地IP192.168.0.1但你想取到自己的外网IP或自己的省市区吗?这些统统都不是事,是事也就烦一会,下载下来执行main方法便可获取到位置和IP。带解析JAR包,最权威最给力的最最最最权威的方法。市面上绝对没有...
  • Java获取外网ip地址

    万次阅读 2015-08-09 17:48:22
    最近在做一个app,其中有一个功能点是获取本机的外网ip,网上流传的绝大部分都是获取局域网ip的方法,有些似乎能够获取外网ip方法但也已经失效。 大部分提到的都是 ip = InetAddress.getLocalHost()....

    最近在做一个app,其中有一个功能点是获取本机的外网ip,网上流传的绝大部分都是获取局域网ip的方法,有些似乎能够获取外网ip方法但也已经失效。

    大部分提到的都是

    ip = InetAddress.getLocalHost().getHostAddress();

    或者

    InetAddress[] inetAdds = InetAddress.getAllByName(InetAddress .getLocalHost().getHostName());

    显然,得到的不是外网地址,也不清楚标着外网ip的各位大侠都是怎么得到获取的是外网ip的结论的。


    一种可行的获取方法,是通过http请求从网站中取出ip字段。例如:http://ip.chinaz.com/

    通过这个网址,加上简单的正则表达式,即可得到。


    通过firefox查看此段的html代码,如下:

    通过正则表达式获取[<strong class="red"]</strong>之间的字符串即可


    代码如下:

    public static String getV4IP() {
    String ip = "";
    String chinaz = "http://ip.chinaz.com/";

    String inputLine = "";
    String read = "";
    try {
    URL url = new URL(chinaz);
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
    BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
    while ((read = in.readLine()) != null) {
    inputLine += read;
    }
    System.out.println(inputLine);

    } catch (Exception e) {
    e.printStackTrace();
    }

    Pattern p = Pattern.compile("\\<strong class\\=\"red\">(.*?)\\<\\/strong>");
    Matcher m = p.matcher(inputLine);
    if(m.find()){
    String ipstr = m.group(1);
    System.out.println(ipstr);
    }
    return ip;
    }




    展开全文
  • 通过 HTTP 访问第三方获取 IP 的服务接口获取本机的外网 IP,例如: http://checkip.amazonaws.com/ https://ipv4.icanhazip.com/ http://bot.whatismyipaddress.com/ 等等… 考虑到这些第三方接口不一定 100% ...

    原理

    通过 HTTP 访问第三方获取 IP 的服务接口获取本机的外网 IP,例如:

    考虑到这些第三方接口不一定 100% 稳定,例如可能出现下线、错误、访问超时或太慢的情况,所以不能仅依赖其中之一。

    下面提供一种方案,并发访问这些服务接口,并返回第一个成功的结果,也就是其中最快的一个返回结果。

    实现

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.concurrent.*;
    import java.util.regex.Pattern;
    
    public class ExternalIPUtil {
    
        /**
         * IP 地址校验的正则表达式
         */
        private static final Pattern IPV4_PATTERN = Pattern.compile("^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
    
        /**
         * 获取 IP 地址的服务列表
         */
        private static final String[] IPV4_SERVICES = {
                "http://checkip.amazonaws.com/",
                "https://ipv4.icanhazip.com/",
                "http://bot.whatismyipaddress.com/"
                // and so on ...
        };
    
        public static String get() throws ExecutionException, InterruptedException {
            List<Callable<String>> callables = new ArrayList<>();
            for (String ipService : IPV4_SERVICES) {
                callables.add(() -> get(ipService));
            }
    
            ExecutorService executorService = Executors.newCachedThreadPool();
            try {
                // 返回第一个成功获取的 IP
                return executorService.invokeAny(callables);
            } finally {
                executorService.shutdown();
            }
        }
    
        private static String get(String url) throws IOException {
            try (BufferedReader in = new BufferedReader(new InputStreamReader(new URL(url).openStream()))) {
                String ip = in.readLine();
                if (IPV4_PATTERN.matcher(ip).matches()) {
                    return ip;
                } else {
                    throw new IOException("invalid IPv4 address: " + ip);
                }
            }
        }
    }
    

    线程池的 ExecutorService.invokeAny(callables) 方法用于并发执行多个线程,并拿到最快的执行成功的线程的返回值,只要有一个执行成功,其他失败的任务都会忽略。但是如果全部失败,例如本机根本就没有连外网,那么就会抛出 ExecutionException 异常。

    Gist

    https://gist.github.com/wucao/811e0bbe08f2dfab527a065d052d12a5

    关注我

    在这里插入图片描述

    展开全文
  • 百度找java获取本机的外网IP地址都是以前的垃圾代码,别人页面都改了,怎么拿得到。 之前学过python的爬虫,拿外网ip简单就是通过 https://ip.chinaz.com/这个网站去得到。 百度习惯了,md !还百度了半天。 ...

    百度找java获取本机的外网IP地址都是以前的垃圾代码,别人页面都改了,怎么拿得到。

    之前学过python的爬虫,拿外网ip简单就是通过 https://ip.chinaz.com/这个网站去得到。

    百度习惯了,md !还百度了半天。

    //代码拿去,有一说一效率有点低
    /**
     * 得到本机的外网的外网IP地址 作为该局域网的区分标志
     * @return
     */
    public static String getIp() {
        Document document = null;
        try {
            document = Jsoup.connect("https://ip.chinaz.com/").get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Elements select = document.select("#leftinfo > div.IcpMain02.bor-t1s02 > div.WhoIpWrap.jspu > div.WhwtdWrap.bor-b1s.col-gray03 > span:nth-child(1)");
        String s = select.toString();
        String ip = s.substring(s.indexOf(">") + 1, s.lastIndexOf("<"));
        return ip;
    }
    //另一种方法,找到的有效:
    
     public static String getIP()  {
            String ip = "http://pv.sohu.com/cityjson?ie=utf-8";
            String inputLine = "";
            String read = "";
            String toIp="";
            try {
                URL url = new URL(ip);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                while ((read = in.readLine()) != null) {
                    inputLine += read;
                }
                String ObjJson=inputLine.substring(inputLine.indexOf("=")+1,inputLine.length()-1);
    //            System.out.println(ObjJson);
                JSONObject jsonObj= JSON.parseObject(ObjJson);
                toIp=jsonObj.getString("cip");
    //            throw new Exception();
            } catch (Exception e) {
                toIp="";
            }
            return toIp;
        }
    
    
     /**
         * 根据域名获取ip地址
         */
        public static String getIfIP() {
            String toIp="";
            try{
                String pathName="baidu.com";//这里没有进行支持https协议的,可以自行进行切割字符串
                InetAddress address =InetAddress.getAllByName(pathName)[0];
                toIp=address.getHostAddress();
            }catch (Exception e){
                toIp="";
            }
            return toIp;
        }

    展开全文
  • 主要介绍了java获取linux服务器上的IP操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Java获取电脑外网ip地址方法

    千次阅读 2018-07-16 16:49:23
    废话不多说,直接上代码 /** 接口超时时间 */ private static final Integer TIME_OUT = 1000; public static String INTRANET_IP = getIntranetIp();... public static String INTERNET_IP = getV4IP(); // ...
  • java获取本地ip、外网ip
  • java获取本机的外网IP地址(亲测有效)

    千次阅读 多人点赞 2020-04-13 01:46:17
    获取本机的外网地址 如果下面正确,请留下您宝贵的赞 package untils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.*; import java.util...
  • java代码得到外网ip地址,java调net webservice远程联调用得着
  • * 获取本机外网ip * */ public static String getPublicIp() { try { String ip = "http://pv.sohu.com/cityjson?ie=utf-8"; URL url = new URL(ip); HttpURLConnection urlConnection = (HttpURLConnecti.....
  • Java 获取内外 IP

    千次阅读 2018-08-14 22:56:30
    获取内网 IP emmm,获取内网 IP 很容易的啦 public static String getInnerIp(){ try { return InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { e.printStackTrace()...
  • 使用java获取本机外网IP地址及原理 原理: 随便百度一个<外网ip地址查询>就可以查询出自己的IP地址 其实就是将页面上内容下载到本地即可。 例如: 点开后可以看到 ​ 就是将这个网页的内容下载...
  • 获取外网IP /** * 获取外网IP * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String ipAddress = null; // ipAddress = this.getRequest().getRemoteAddr...
  • 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件不能获取到客户端的真实IP地址了。像移动网关一样,iisforward这个...
  • 用来实现如何获得本机的内网ip,外网ip和根据ip获得相应的地址。 花了几个小时才弄清,然后整理了一下,希望有用。 首先要明白以下三种ip地址的区别: (1)127.0.0.1也就是localhost,这是本地ip地址,是只能...
  • /** * IP地址相关工具类 */ public class IpUtil { private static final Logger logger = LoggerFactory....获取本机的外网ip地址</h2> * @return */ public static String getV4OrV6IP() { String ip =
  • 服务器端获取访问者外网iP的核心代码就是下面这一行代码,需要特别注意的是下面这行代码只能在服务器端使用才能获取外网地址,在本地开发环境获取到的是内网IP,亲测有效,至于我提供的工具类只是更加全面的情况而已...
  • 主要介绍了Java判断IP地址为内网IP还是公网IP的方法,针对tcp/ip协议中保留的三个私有地址进行判断分析,是比较实用的技巧,需要的朋友可以参考下
  • 通常,用户都是通过路由...我是通过访问www.ip138.com来获取外网IP,并用JFrame显示。该方法的关键是正确的ip138查询网站的URL。目前能成功获取,若获取失败请更改源代码中URL。更改方法详见"url更改方法.txt"文件。
  • Java获取本机外网ip地址的方法

    万次阅读 热门讨论 2016-10-16 17:25:42
    Java获取外网IP地址的方法 获取本地IP地址的方法 public static String getLocalAddress(){ String ip = ""; try { ip = InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) ...
  • 主要介绍了java根据ip地址获取详细地域信息的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • java获取本地外网IP

    2021-05-11 22:50:32
    下面是通过java获取外网IP的程序。 package com.fan.study.ip; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.n
  • package org.jeecg.common.util; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; ... import java.io.BufferedReader;...import java.io.Inpu
  • java 获取内外网IP demo

    2020-02-17 20:52:17
    java 获取内外网IP demo import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.InetAddress; import java.net....
  • java代码实现外网IP获取

    千次阅读 2017-08-01 18:11:32
    private static String getMyIP() throws IOException { InputStream ins = null; try { String l = "http://1212.ip138.com/ic.asp"; URL url = new URL(l); U

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,572
精华内容 27,028
关键字:

Java获取外网IP