最近在做一个app,其中有一个功能点是获取本机的外网ip,网上流传的绝大部分都是获取局域网ip的方法,有些似乎能够获取外网ip方法但也已经失效。

大部分提到的都是

ip = InetAddress.getLocalHost().getHostAddress();

或者

InetAddress[] inetAdds = InetAddress.getAllByName(InetAddress .getLocalHost().getHostName());

显然,得到的不是外网地址,也不清楚标着外网ip的各位大侠都是怎么得到获取的是外网ip的结论的。

一种可行的获取方法,是通过http请求从网站中取出ip字段。例如:http://ip.chinaz.com/

通过这个网址,加上简单的正则表达式,即可得到。

通过firefox查看此段的html代码,如下:

通过正则表达式获取[<strong class="red"]</strong>之间的字符串即可

代码如下:

public static String getV4IP() {
String ip = "";
String chinaz = "http://ip.chinaz.com/";

String inputLine = "";
String read = "";
try {
URL url = new URL(chinaz);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
while ((read = in.readLine()) != null) {
inputLine += read;
}
System.out.println(inputLine);

} catch (Exception e) {
e.printStackTrace();
}

Pattern p = Pattern.compile("\\<strong class\\=\"red\">(.*?)\\<\\/strong>");
Matcher m = p.matcher(inputLine);
if(m.find()){
String ipstr = m.group(1);
System.out.println(ipstr);
}
return ip;
}

Java获取外网ip地址相关推荐

  1. 如何从HttpServletRequest中获取外网IP地址

    如何从HttpServletRequest中获取外网IP地址 Java 中可以通过HttpServletRequest类的getRemoteAddr(); //可能是用户真是ip也可能是代理服务器的i ...

  2. python获取公网ip的几种方式_python获取外网ip地址的方法总结

    本文实例总结了python获取外网ip地址的方法.分享给大家供大家参考.具体如下: 一.利用脚本引擎库直接获取 import console; import web.script import ine ...

  3. 如何获取外网IP地址

    1.  获取外网IP的方法: 获取外网IP地址方法: 访问网站:http://www.3322.org/dyndns/getip 访问网站:http://city.ip138.com/ip2city. ...

  4. 获取外网IP地址API

    1.获取外网IP地址 地址: http://pv.sohu.com/cityjson?ie=utf-8 返回结果: var returnCitySN = {"cip": " ...

  5. Python定时获取外网IP地址并发送邮件

    去年入手了树莓派4B,放在家里当服务器用.由于电信公网IP经常更换,所以需要定期获取公网IP才能连上. import os import threading from smtplib import S ...

  6. MFC 获取外网IP地址和MAC地址

    MAC地址获取: CString GetMacAddress(void) { //CString strIP,strGateWay,strSubnetMask; CString strMac; str ...

  7. MFC C++ 获取外网IP地址

    #include <afxinet.h>//GB2312 转换成 Unicode wchar_t* GB2312ToUnicode(const char* szGBString) {UIN ...

  8. [网络]_获取内外网IP地址【Auto.js】

    auto(); console.show();importClass('java.net.Inet4Address'); importClass('java.net.InetAddress'); im ...

  9. 怎样查询本机ip地址?如何利用花生壳获取外网IP教程

    听到ip地址这个概念,想必大家都不会陌生,如果我们想要跟对方进行通信,通常我们需要知道对方的ip地址,另外在网络通信中,还有一个非常重要的地址,那就是mac地址.那么我们如何知道本机ip地址呢?我们如 ...

  10. Golang 获取当前外网IP/地址/运营商

    Golang 获取当前外网IP/地址/运营商 - Go语言中文网 - Golang中文社区 package mainimport ("fmt""io/ioutil&quo ...

最新文章

  1. python里面self_Python中的self详细解析
  2. Socket编程与TCP
  3. insert with special ID
  4. Bzoj4561 [JLoi2016]圆的异或并
  5. Windows隐藏账户处置
  6. 在物欲横流,心浮气躁的今天,毕业生靠什么来维持自己的梦想?
  7. 惊了!最通俗易懂的Djongo入门竟然在这里!
  8. ffempge 效率 生成_ffmpeg 编译静态库,搞了好久,终于搞成功了.根据网上教程做的 · iodefog...
  9. Agent监控软件在IT工作中的应用
  10. Recovery真的不是难事!
  11. 你如何在PowerShell中注释掉代码?
  12. mysql双机热备 读写分离_轻松搭建MySQL主从复制、读写分离双机热备)
  13. Sublime Text关闭自动更新
  14. NPAPI最简单的代码
  15. dmg文件 linux,Linux挂载Mac系统下的dmg文件
  16. 完整的动态加载卸载程序集的解决方案
  17. 双因素认证(two-factor authentication)
  18. 单变量微积分笔记1——导数1(导数的基本概念)
  19. 用excel做数据分析必知的编程语言
  20. 上班聊天,摸鱼神器,手写一款即时通讯工具(附源码!!!)

热门文章

  1. 局域网vnc远程控制软件,那些超级好用的局域网vnc远程控制软件
  2. grpc流式传输心得
  3. 分享盘点9个可免费使用的网站CDN加速服务
  4. 给敏捷软件开发的26条建议
  5. 2019BJFU 网站设计(孙俏-web前端开发)实验代码-181002222
  6. 第2关:HTML结构:自我简介网页
  7. python中如何判断词性_Python nltk 英文词性分析
  8. 《windows 程序设计》读书笔记 三
  9. 【JAVA实现近义词匹配挖取算法】
  10. 用SQL实现取员工日工作量和月工作量