• 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

  • 相关阅读:
    HDU4366 Successor 线段树+预处理
    POJ2823 Sliding Window 单调队列
    HDU寻找最大值 递推求连续区间
    UVA846 Steps 二分查找
    HDU3415 Max Sum of MaxKsubsequence 单调队列
    HDU时间挑战 树状数组
    UVA10168 Summation of Four Primes 哥德巴赫猜想
    UESTC我要长高 DP优化
    HDUChess 递推
    HDU4362 Dragon Ball DP+优化
  • 原文地址:https://www.cnblogs.com/pojdd/p/8647615.html
Copyright © 2020-2023  润新知