请问如何用java获取公网IP?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问如何用java获取公网IP?相关的知识,希望对你有一定的参考价值。

请问在java中如何获取分配给本机的公网IP呢,本机是通过路由拨号上网的,

请各位提供者方面的程序或解决思路,万分感谢!!!

参考技术A 需要你在外部做一个服务器

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

 

以上是关于请问如何用java获取公网IP?的主要内容,如果未能解决你的问题,请参考以下文章

如何用node.js 获取访问者的公网IP

如何用公网IP访问IDEA的Webapp

请问Ip报中的源站ip 是局域网ip还是公网ip

请问移动光纤怎么连接路由器?无法获得公网IP地址、掩码和网关、DNS信息

JAVA获取公网ip

连接路由器后不能用公网ip访问nginx