一、获取本地外网IP

  1. public static String GetNetIp()
  2. {
  3. URL infoUrl = null;
  4. InputStream inStream = null;
  5. try
  6. {
  7. //http://iframe.ip138.com/ic.asp
  8. //infoUrl = new URL("http://city.ip138.com/city0.asp");
  9. infoUrl = new URL("http://iframe.ip138.com/ic.asp");
  10. URLConnection connection = infoUrl.openConnection();
  11. HttpURLConnection httpConnection = (HttpURLConnection)connection;
  12. int responseCode = httpConnection.getResponseCode();
  13. if(responseCode == HttpURLConnection.HTTP_OK)
  14. {
  15. inStream = httpConnection.getInputStream();
  16. BufferedReader reader = new BufferedReader(new InputStreamReader(inStream,"utf-8"));
  17. StringBuilder strber = new StringBuilder();
  18. String line = null;
  19. while ((line = reader.readLine()) != null)
  20. strber.append(line + "\n");
  21. inStream.close();
  22. //从反馈的结果中提取出IP地址
  23. int start = strber.indexOf("[");
  24. int end = strber.indexOf("]", start + 1);
  25. line = strber.substring(start + 1, end);
  26. return line;
  27. }
  28. }
  29. catch(MalformedURLException e) {
  30. e.printStackTrace();
  31. }
  32. catch (IOException e) {
  33. e.printStackTrace();
  34. }
  35. return null;
  36. }

二、 获取本地内网IP

  1. // 获取本地IP函数
  2. public static String getLocalIPAddress() {
  3. try {
  4. for (Enumeration<NetworkInterface> mEnumeration = NetworkInterface
  5. .getNetworkInterfaces(); mEnumeration.hasMoreElements();) {
  6. NetworkInterface intf = mEnumeration.nextElement();
  7. for (Enumeration<InetAddress> enumIPAddr = intf
  8. .getInetAddresses(); enumIPAddr.hasMoreElements();) {
  9. InetAddress inetAddress = enumIPAddr.nextElement();
  10. // 如果不是回环地址
  11. if (!inetAddress.isLoopbackAddress()) {
  12. // 直接返回本地IP地址
  13. return inetAddress.getHostAddress().toString();
  14. }
  15. }
  16. }
  17. } catch (SocketException ex) {
  18. System.err.print("error");
  19. }
  20. return null;
  21. }

三、 获取本地外网IP、内网IP、计算机名等信息

    1. /**
    2. *功能: 获取外网IP,内网IP,计算机名等信息;
    3. *
    4. *作者: jef
    5. *
    6. *时间: 20100714
    7. *
    8. *版本: v1.0.0
    9. *
    10. *
    11. *程序说明:
    12. *          通过纯真网络来获取IP,因为ip138网站有时不准。
    13. *
    14. *          运行程序时命令行参数请输入http://www.cz88.net/ip/viewip778.aspx
    15. *          等待程序运行完毕(执行时间视网络情况而定),会在程序目录下生成一个GETIP.sys文件来输出各参数。
    16. *
    17. *          运行时如果不输入命令行参数,则默认使用http://www.cz88.net/ip/viewip778.aspx来获取IP。
    18. *
    19. *          注意,
    20. *          不输入命令行参数时获取的信息会输出到命令行,不会输出到文件。
    21. *          输入命令行参数时获取的信息则会输出到文件,不管获取IP成功与否。
    22. *
    23. *          输出信息部分内容的含义如下,
    24. *          sucess
    25. *          hostName is:MyPC
    26. *          hostAddr is:192.168.1.114
    27. *                 Foreign IP is:210.72.100.9
    28. *          Location is:江苏省苏州 长城宽带
    29. *          ......
    30. *
    31. *          第一行表示全部过程成功与否。成功输出"sucess",否则"fail",
    32. *          第二行表示计算机名,
    33. *          第三行表示内网IP,
    34. *          第四行表示外网IP,
    35. *          第五行表示外网IP所有的可能地理位置(可信度依赖于查询的网站)。
    36. *          ......
    37. *
    38. *
    39. *使用举例:
    40. *           拷贝 \cn\mail\sendback\GetIP.class 文件到C:\Documents and Settings下。注意要保留包名的目录。
    41. *           打开命令提示行窗口,输入:
    42. *
    43. *           c:
    44. *           cd C:\Documents and Settings
    45. *           java cn.mail.sendback.GetIP http://www.cz88.net/ip/viewip778.aspx
    46. *
    47. *           等待C:\Documents and Settings目录下出现GETIP.sys文件则表示执行完毕,
    48. *           用记事本打开该文件。含义见说明部分。
    49. *
    50. */
    51. package com.soai.test;
    52. import java.io.BufferedReader;
    53. import java.io.BufferedWriter;
    54. import java.io.FileNotFoundException;
    55. import java.io.FileOutputStream;
    56. import java.io.IOException;
    57. import java.io.InputStreamReader;
    58. import java.io.OutputStream;
    59. import java.io.OutputStreamWriter;
    60. import java.net.InetAddress;
    61. import java.net.URL;
    62. import java.net.UnknownHostException;
    63. import java.util.Date;
    64. public class GetIP {
    65. /**
    66. * @param args
    67. */
    68. public static void main(String[] args){
    69. // 通过纯真网络来获取IP,因为ip138网站有时不准。
    70. // 运行程序时命令行输入:http://www.cz88.net/ip/viewip778.aspx
    71. boolean bHasNoArgs =false;
    72. if(args.length<=0) bHasNoArgs =true;
    73. StringBuffer sbFileContent =new StringBuffer();
    74. boolean bGetSuccess =true;
    75. try {
    76. InetAddress host =InetAddress.getLocalHost();
    77. String hostName =host.getHostName();
    78. String hostAddr=host.getHostAddress();
    79. String tCanonicalHostName =host.getCanonicalHostName();
    80. Date da =new Date();
    81. String osname =System.getProperty("os.name");
    82. String osversion =System.getProperty("os.version");
    83. String username =System.getProperty("user.name");
    84. String userhome =System.getProperty("user.home");
    85. String userdir =System.getProperty("user.dir");
    86. if(bHasNoArgs){
    87. System.out.println("hostName is:"+hostName);
    88. System.out.println("hostAddr is:"+hostAddr);
    89. System.out.println("Current Date is:"+da.toString());
    90. System.out.println("osname is:"+osname);
    91. System.out.println("osversion is:"+osversion);
    92. System.out.println("username is:"+username);
    93. System.out.println("userhome is:"+userhome);
    94. System.out.println("userdir is:"+userdir);
    95. }
    96. else{
    97. sbFileContent.append("hostName is:"+hostName+"\n");
    98. sbFileContent.append("hostAddr is:"+hostAddr+"\n");
    99. sbFileContent.append("Current Date is:"+da.toString()+"\n");
    100. sbFileContent.append("osname is:"+osname+"\n");
    101. sbFileContent.append("osversion is:"+osversion+"\n");
    102. sbFileContent.append("username is:"+username+"\n");
    103. sbFileContent.append("userhome is:"+userhome+"\n");
    104. sbFileContent.append("userdir is:"+userdir+"\n");
    105. }
    106. StringBuffer url =new StringBuffer();
    107. if(bHasNoArgs||args[0].equals(null)||args[0].equals("")){
    108. url.append("http://www.cz88.net/ip/viewip778.aspx");
    109. }
    110. else
    111. url.append(args[0]);
    112. StringBuffer strForeignIP =new StringBuffer("strForeignIPUnkown");
    113. StringBuffer strLocation =new StringBuffer("strLocationUnkown");
    114. if(GetIP.getWebIp(url.toString(),strForeignIP,strLocation)){
    115. if(bHasNoArgs){
    116. System.out.println("Foreign IP is:"+strForeignIP);
    117. System.out.println("Location is:"+strLocation);
    118. }
    119. else{
    120. sbFileContent.append("Foreign IP is:"+strForeignIP+"\n");
    121. sbFileContent.append("Location is:"+strLocation+"\n");
    122. }
    123. }
    124. else{
    125. if(bHasNoArgs){
    126. System.out.println("Failed to connect:"+url);
    127. }
    128. else{
    129. bGetSuccess =false;
    130. sbFileContent.append("Failed to connect:"+url+"\n");
    131. }
    132. }
    133. } catch (UnknownHostException e) {
    134. if(bHasNoArgs){
    135. e.printStackTrace();
    136. }
    137. else{
    138. bGetSuccess =false;
    139. sbFileContent.append(e.getStackTrace()+"\n");
    140. }
    141. }
    142. if(bGetSuccess)
    143. sbFileContent.insert(0,"sucess"+"\n");
    144. else
    145. sbFileContent.insert(0,"fail"+"\n");
    146. if(!bHasNoArgs) write2file(sbFileContent);
    147. }
    148. public static boolean getWebIp(String strUrl,
    149. StringBuffer strForeignIP,StringBuffer strLocation) {
    150. try {
    151. URL url = new URL(strUrl);
    152. BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
    153. String s = "";
    154. StringBuffer sb = new StringBuffer("");
    155. while ((s = br.readLine()) != null) {
    156. sb.append(s + "\r\n");
    157. }
    158. br.close();
    159. String webContent = "";
    160. webContent = sb.toString();
    161. if( webContent.equals(null)|| webContent.equals("") ) return false;
    162. String flagofForeignIPString ="IPMessage";
    163. int startIP = webContent.indexOf(flagofForeignIPString)+flagofForeignIPString.length()+2;
    164. int endIP = webContent.indexOf("</span>",startIP);
    165. strForeignIP.delete(0, webContent.length());
    166. strForeignIP.append(webContent.substring(startIP,endIP));
    167. String flagofLocationString ="AddrMessage";
    168. int startLoc = webContent.indexOf(flagofLocationString)+flagofLocationString.length()+2;
    169. int endLoc = webContent.indexOf("</span>",startLoc);
    170. strLocation.delete(0, webContent.length());
    171. strLocation.append(webContent.substring(startLoc,endLoc));
    172. return true;
    173. } catch (Exception e) {
    174. //e.printStackTrace();
    175. return false;
    176. }
    177. }
    178. public static void  write2file(StringBuffer content){
    179. if(content.length()<=0) return;
    180. try {
    181. FileOutputStream fos = new FileOutputStream("GETIP.sys");
    182. OutputStreamWriter osr =new OutputStreamWriter(fos);
    183. BufferedWriter bw =new BufferedWriter(osr);
    184. try {
    185. int index =0;
    186. while(index>=0){
    187. int preIndex =index;
    188. index =content.indexOf("\n", preIndex+2);
    189. if(index>0){
    190. String str =new String(content.substring(preIndex, index));
    191. bw.write(str);
    192. bw.newLine();
    193. }
    194. else{
    195. String str =new String(content.substring(preIndex, content.length()-1));
    196. bw.write(str);
    197. break;
    198. }
    199. }
    200. } catch (IOException e1) {
    201. // TODO Auto-generated catch block
    202. //e1.printStackTrace();
    203. }
    204. try {
    205. bw.close();
    206. } catch (IOException e) {
    207. // TODO Auto-generated catch block
    208. //e.printStackTrace();
    209. }
    210. } catch (FileNotFoundException e) {
    211. // TODO Auto-generated catch block
    212. //e.printStackTrace();
    213. }
    214. }
    215. }

Android 获取本地外网IP、内网IP、计算机名等信息的更多相关文章

  1. 如何通过IP地址分辨公网、私网、内网、外网

    如何通过IP地址分辨公网.私网.内网.外网   内.外网是相对于防火墙而言的,在防火墙内部叫做内网,反之就是外网.   在一定程度上外网等同于公网,内网等同于私网.   地址为如下3个区域就是处于私网 ...

  2. 外网访问内网的FTP服务器

    转自 外网访问内网的FTP服务器 首先感谢作者给出的总结,原文是介绍Serv-U的,我针对FileZilla Server进行了稍微修改,仅看操作可直接跳到分割线后第3部分. 1. 背景简介最近研究如 ...

  3. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  4. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  5. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

随机推荐

  1. Vue.Js添加自定义插件

    基于上篇我们讲了 在window下搭建Vue.Js开发环境 我们可以开发自己的vue.js插件发布到npm上,供大家下载使用. 1.首先打开cmd命令窗口,进入我们的工作目录下 执行 cd E:\vu ...

  2. IDEA 添加jar包的三种方式(重点:new uer Libraries)

    学习参考: http://zyjustin9.iteye.com/blog/2172445 交代: 本文只讲述类似eclipse中new uer Libraries的功能,即自己新建lib库.其他方法 ...

  3. uva1494 最小生成树--例题

    这题说的是n个城市 建路 使他们联通然后 , 可以使用一条超级的路这条路不计入总长,此时路长度为B, 这条路链接的两个城市人口与和为A+B, 然后计算出最大的A/B 解题 先生成一颗最小生成树,然后 ...

  4. Storm集成Siddhi

    <Siddhi初探>中我们介绍了Siddhi的基本使用方法,并表示我们将把Siddhi集成到Storm中作为流任务处理引擎.本文将用<Storm初探>中的例子讲解如何集成Sid ...

  5. Hive 体系结构介绍

    下面是Hive的架构图. 图1.1 Hive体系结构 Hive的体系结构可以分为以下几部分: (1)用户接口主要有三个:CLI,Client 和 WUI.其中最常用的是CLI,Cli启动的时候,会同时 ...

  6. STM8S003F3通过PWM波实现三基色呼吸灯(转)

    源: STM8S003F3通过PWM波实现三基色呼吸灯

  7. python函数—形参、实参、位置参数、关键字参数

    1.通过def function_name([parameter]): 定义,函数一遇到return即结束运行.如果函数没有定义返回值,则返回None,如果定义了一个返回值,则返回该对象,如果一个re ...

  8. log4j 根据类名指定文件

    log4j.logger.io.netty=INFO, stdout, spiderlog4j.logger.com.ld.net.spider=INFO, stdout, spider log4j. ...

  9. NOIP 华容道

    描述 小 B 最近迷上了华容道,可是他总是要花很长的时间才能完成一次.于是,他想到用编程来完成华容道:给定一种局面,华容道是否根本就无法完成,如果能完成,最少需要多少时间. 小 B 玩的华容道与经典的 ...

  10. python中command执行shell命令脚本方法

    在Python中有一个模块commands也很容易做到以上的效果.看一下三个函数:1). commands.getstatusoutput(cmd)用os.popen()执行命令cmd, 然后返回两个 ...