码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA获取公网ip

时间:2018-03-26 00:44:02      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:技术   自己   tac   alt   lex   不可   好玩的   iter   write   

在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 }

 

JAVA获取公网ip

标签:技术   自己   tac   alt   lex   不可   好玩的   iter   write   

原文地址:https://www.cnblogs.com/pojdd/p/8647615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!