• JAVA获取公网ip


    在ipv4地址稀缺的今天,分配到公网ip几乎是不可能的,但是我拨号之后的ip竟然是公网IP。

    将自己的电脑作为服务器·,做点好玩的程序,就成为了可能。

    由于运营商的ip是动态分配的公网ip的所以就需要做一个动态解析。

    但是又没有服务器,应该怎么办呢?

    思路是首先服务端获取公网ip,将IP加密后作为文章发布到莫个知名论坛上。客户端通过查询这篇文章,并解密来获取ip

    这样就可以实现动态解析了

    由于电脑还加了个路由器,所以不能直接获取公网ip,此时就需要借助第三方网站了。

    百度搜索ip会出现

    通过分析找到了关键地址

    http://2017.ip138.com/ic.asp

    这个网页非常简洁,包含ip和地址

    通过爬取这个地址即可获得公网ip

     1 package 动态ip发布;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.FileWriter;
     5 import java.io.IOException;
     6 import java.io.InputStreamReader;
     7 import java.io.PrintWriter;
     8 import java.net.MalformedURLException;
     9 import java.net.URL;
    10 import java.net.URLConnection;
    11 
    12 public class Main {
    13     public static void main(String args[]) {
    14         System.out.println(getip.publicip());
    15     }
    16 }
    17 class getip {
    18     public static String publicip() {
    19         URL url = null;
    20         URLConnection urlconn = null;
    21         BufferedReader br = null;
    22         try {
    23             url = new URL("http://2017.ip138.com/ic.asp");//爬取的网站是百度搜索ip时排名第一的那个
    24             urlconn = url.openConnection();
    25             br = new BufferedReader(new InputStreamReader(
    26                     urlconn.getInputStream()));
    27             String buf = null;
    28             String get= null;
    29             while ((buf = br.readLine()) != null) {
    30                 get+=buf;
    31             }
    32             int where,end;
    33             for(where=0;where<get.length()&&get.charAt(where)!='[';where++);
    34             for(end=where;end<get.length()&&get.charAt(end)!=']';end++);
    35             get=get.substring(where+1,end);
    36             return get;
    37         } catch (MalformedURLException e) {
    38             e.printStackTrace();
    39         } catch (IOException e) {
    40             e.printStackTrace();
    41         } finally {
    42             try {
    43                 br.close();
    44             } catch (IOException e) {
    45                 e.printStackTrace();
    46             }
    47         }
    48         return null;
    49     }
    50 }

     更新:

    有园友对文章有些疑问

    下面进行补充

    如上图可以看到下面有一个链接,打开后是

    按F12打开浏览器的调试工具

     很容易发现这个地址,打开后就是

    http://2018.ip138.com/ic.asp

  • 相关阅读:
    如何在Odoo创建新数据的时候添加自己的方法
    如何在odoo中实现隐藏原有菜单meum(3行代码实现)
    博客皮肤
    通过备份 Etcd 来完美恢复 Kubernetes 中的误删数据
    修改kubernetes-dashboard默认token认证时间
    Docker就该这么学--第一个dockerfile镜像文件
    nginx优化之网络服务模型
    nginx优化之nginx的进程与线程
    php的加载方式和设计模式
    nginx优化之nginx的配置文件详解
  • 原文地址:https://www.cnblogs.com/pojdd/p/8647615.html
Copyright © 2020-2023  润新知