zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/pojdd/p/8647615.html
Copyright © 2011-2022 走看看