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

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

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

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

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

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

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

百度搜索ip会出现

通过分析找到了关键地址

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

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

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

 package 动态ip发布;

 import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection; public class Main {
public static void main(String args[]) {
System.out.println(getip.publicip());
}
}
class getip {
public static String publicip() {
URL url = null;
URLConnection urlconn = null;
BufferedReader br = null;
try {
url = new URL("http://2017.ip138.com/ic.asp");//爬取的网站是百度搜索ip时排名第一的那个
urlconn = url.openConnection();
br = new BufferedReader(new InputStreamReader(
urlconn.getInputStream()));
String buf = null;
String get= null;
while ((buf = br.readLine()) != null) {
get+=buf;
}
int where,end;
for(where=0;where<get.length()&&get.charAt(where)!='[';where++);
for(end=where;end<get.length()&&get.charAt(end)!=']';end++);
get=get.substring(where+1,end);
return get;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
}

更新:

有园友对文章有些疑问

下面进行补充

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

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

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

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

JAVA获取公网ip的更多相关文章

  1. java获取公网ip以及物理地址和代理商

    package ipconfig; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr ...

  2. C#联机获取公网IP

    C#获取IP的方式有很多种,这里通过http://www.ipip.net/这个稳定的在线IP库的来获取公网IP. string tempip = "0.0.0.0"; WebRe ...

  3. python获取公网ip,本地ip及所在国家城市等相关信息收藏

    python获取公网ip的几种方式       from urllib2 import urlopen   my_ip = urlopen('http://ip.42.pl/raw').read() ...

  4. Python 之自动获取公网IP

    Python 之自动获取公网IP 2017年9月30日 文档下载:https://wenku.baidu.com/view/ff40aef7f021dd36a32d7375a417866fb84ac0 ...

  5. Delphi获取公网IP地址函数

    uses IdHTTP; function GetPublicIP: string; var strIP, URL: string; iStart, iEnd: Integer; MyIdHTTP: ...

  6. 获取本地ip和获取公网ip

    import socket def get_local_ip(): ''' 获取本地ip地址 :return: ''' s = socket.socket(socket.AF_INET, socket ...

  7. python获取公网ip的几种方式

    python获取公网ip的几种方式 转 https://blog.csdn.net/conquerwave/article/details/77666226 from urllib2 import u ...

  8. Java获取用户ip

    /** * 获取客户端ip地址(可以穿透代理) * * @param request * @return */ public static String getRemoteAddr(HttpServl ...

  9. java获取服务器IP地址及MAC地址的方法

    这篇文章主要介绍了java编程实现获取机器IP地址及MAC地址的方法,实例分析了Java分别针对单网卡及多网卡的情况下获取服务器IP地址与MAC地址的相关技巧,需要的朋友可以参考下   本文实例讲述了 ...

随机推荐

  1. 利用docker在window7下安装TensorFlow

    安装过程下碰了不少坑,记录一下安装过程,方便以后有需要时复用. 1.安装docker 下载最新版本的docker并且默认安装即可,安装后打开Docker Quickstart Terminal,初次进 ...

  2. delphi控件安装(安装ODAC、TeeChart、TServerSocket、TWSocketServer、TComm)

    一.oracle插件安装delphi7如何安装oracle access控件 假设ODAC主目录在 D:\dzj\odac Delphi7主目录在 D:\Program Files\Borland\D ...

  3. DataSet与JSON互转

    DataSetConverter4Delphi https://github.com/ezequieljuliano/DataSetConverter4Delphi ----------------- ...

  4. 国外优秀的UI设计资源库收集

    国外优秀的UI设计资源库 网站设计或者说UI设计对于Web上的运用是非常的关键,一个站做得好不好,能不能吸引人的眼球,设计占了不低的地位,但话又说回来,Web前端人员又有多少人是设计专业毕业,具有这方 ...

  5. 在windows下的QT编程中的char*,wchar_t*与QString之间的转换(利用reinterpret_cast和_stprintf函数,fromWCharArray从字符数组里读取数据)

    http://blog.csdn.net/yangxiao_0203/article/details/7422660 转自http://hi.baidu.com/zj41342626/blog/ite ...

  6. shell多线程

    a='a1' b='b1' c='c1' d='d1' e='e1' ARR=($a $b $c $d $e) rd=`date +%N` for i in ${ARR[*]} do { ;>& ...

  7. Spring如何解决循环引用

    概念 什么是循环引用? 故名思义,多个对象形成环路. 有哪几种循环引用? 在Spring中存在如下几种循环引用,一一举例分析一下 注入循环引用(Set注入 注解注入) package c.q.m; i ...

  8. 【Mysql】重启: mysql.service: Service hold-off time over, scheduling restart.

    参考链接:http://sharong.iteye.com/blog/2262760 重启mysql服务器 (/etc/init.d/mysql stop  /etc/init.d/mysql sta ...

  9. laravel配置不同环境的配置文件

    //在入口bootstrap/App.php中 $env = $app->detectEnvironment( function () use ($app) { $uname = php_una ...

  10. shell遍历文件

    取文件每行的数据,需要按列取  可以 sed 加管道 使用 awk 取列 platform="list.txt" line=`grep -vc '^$' $platform` ; ...