zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

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

AndroidIP计算机 获取 信息 本地 内网 外网
2023-09-11 14:18:01 时间

一、获取本地外网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.                
    76.                 try {
    77.                         InetAddress host =InetAddress.getLocalHost();
    78.                        
    79.                         String hostName =host.getHostName();
    80.                         String hostAddr=host.getHostAddress();
    81.                         String tCanonicalHostName =host.getCanonicalHostName();

    82.                         Date da =new Date();
    83.                         String osname =System.getProperty("os.name");
    84.                         String osversion =System.getProperty("os.version");
    85.                         String username =System.getProperty("user.name");
    86.                         String userhome =System.getProperty("user.home");
    87.                         String userdir =System.getProperty("user.dir");
    88.                        
    89.                         if(bHasNoArgs){
    90.                                 System.out.println("hostName is:"+hostName);
    91.                                 System.out.println("hostAddr is:"+hostAddr);

    92.                                 System.out.println("Current Date is:"+da.toString());
    93.                                 System.out.println("osname is:"+osname);
    94.                                 System.out.println("osversion is:"+osversion);
    95.                                 System.out.println("username is:"+username);
    96.                                 System.out.println("userhome is:"+userhome);
    97.                                 System.out.println("userdir is:"+userdir);
    98.                         }
    99.                         else{
    100.                                 sbFileContent.append("hostName is:"+hostName+"\n");
    101.                                 sbFileContent.append("hostAddr is:"+hostAddr+"\n");
    102.                                
    103.                                 sbFileContent.append("Current Date is:"+da.toString()+"\n");
    104.                                 sbFileContent.append("osname is:"+osname+"\n");
    105.                                 sbFileContent.append("osversion is:"+osversion+"\n");
    106.                                 sbFileContent.append("username is:"+username+"\n");
    107.                                 sbFileContent.append("userhome is:"+userhome+"\n");
    108.                                 sbFileContent.append("userdir is:"+userdir+"\n");
    109.                         }
    110.                        
    111.                         StringBuffer url =new StringBuffer();
    112.                         if(bHasNoArgs||args[0].equals(null)||args[0].equals("")){
    113.                                 url.append("http://www.cz88.net/ip/viewip778.aspx");
    114.                         }
    115.                         else
    116.                                 url.append(args[0]);
    117.                         StringBuffer strForeignIP =new StringBuffer("strForeignIPUnkown");
    118.                         StringBuffer strLocation =new StringBuffer("strLocationUnkown");
    119.                        
    120.                        
    121.                         if(GetIP.getWebIp(url.toString(),strForeignIP,strLocation)){
    122.                                 if(bHasNoArgs){
    123.                                         System.out.println("Foreign IP is:"+strForeignIP);
    124.                                         System.out.println("Location is:"+strLocation);
    125.                                 }
    126.                                 else{
    127.                                         sbFileContent.append("Foreign IP is:"+strForeignIP+"\n");
    128.                                         sbFileContent.append("Location is:"+strLocation+"\n");
    129.                                 }
    130.                         }
    131.                         else{
    132.                                 if(bHasNoArgs){
    133.                                         System.out.println("Failed to connect:"+url);
    134.                                 }
    135.                                 else{
    136.                                         bGetSuccess =false;
    137.                                         sbFileContent.append("Failed to connect:"+url+"\n");
    138.                                 }
    139.                         }
    140.                        
    141.                        
    142.                 } catch (UnknownHostException e) {
    143.                         if(bHasNoArgs){
    144.                                 e.printStackTrace();
    145.                         }
    146.                         else{
    147.                                 bGetSuccess =false;
    148.                                 sbFileContent.append(e.getStackTrace()+"\n");
    149.                         }
    150.                 }
    151.                
    152.                
    153.                 if(bGetSuccess)
    154.                         sbFileContent.insert(0,"sucess"+"\n");
    155.                 else
    156.                         sbFileContent.insert(0,"fail"+"\n");
    157.                        
    158.                 if(!bHasNoArgs) write2file(sbFileContent);
    159.                
    160.         }

    161.        
    162.          public static boolean getWebIp(String strUrl,
    163.                          StringBuffer strForeignIP,StringBuffer strLocation) {
    164.                   try {

    165.                    URL url = new URL(strUrl);

    166.                    BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));

    167.                    String s = "";
    168.                    StringBuffer sb = new StringBuffer("");
    169.                    while ((s = br.readLine()) != null) {
    170.                     sb.append(s + "\r\n");
    171.                    }
    172.                    br.close();
    173.                   
    174.                    String webContent = "";
    175.                    webContent = sb.toString();
    176.                   
    177.                    if( webContent.equals(null)|| webContent.equals("") ) return false;
    178.                   
    179.                   
    180.                   
    181.                    String flagofForeignIPString ="IPMessage";
    182.                    int startIP = webContent.indexOf(flagofForeignIPString)+flagofForeignIPString.length()+2;
    183.                    int endIP = webContent.indexOf("</span>",startIP);
    184.                    strForeignIP.delete(0, webContent.length());
    185.                    strForeignIP.append(webContent.substring(startIP,endIP));

    186.                    String flagofLocationString ="AddrMessage";
    187.                    int startLoc = webContent.indexOf(flagofLocationString)+flagofLocationString.length()+2;
    188.                    int endLoc = webContent.indexOf("</span>",startLoc);
    189.                    strLocation.delete(0, webContent.length());
    190.                    strLocation.append(webContent.substring(startLoc,endLoc));                  
    191.                   
    192.                    return true;

    193.                   } catch (Exception e) {
    194.                    //e.printStackTrace();
    195.                    return false;
    196.                   }
    197.                  }       
    198.          

    199.          public static void  write2file(StringBuffer content){

    200.                  if(content.length()<=0) return;
    201.                  
    202.                         try {
    203.                                 FileOutputStream fos = new FileOutputStream("GETIP.sys");
    204.                                 OutputStreamWriter osr =new OutputStreamWriter(fos);
    205.                                 BufferedWriter bw =new BufferedWriter(osr);       
    206.                                
    207.                                 try {
    208.                                         int index =0;
    209.                                         while(index>=0){
    210.                                                 int preIndex =index;
    211.                                                 index =content.indexOf("\n", preIndex+2);
    212.                                                
    213.                                                 if(index>0){
    214.                                                         String str =new String(content.substring(preIndex, index));
    215.                                                         bw.write(str);
    216.                                                         bw.newLine();
    217.                                                 }
    218.                                                 else{
    219.                                                         String str =new String(content.substring(preIndex, content.length()-1));
    220.                                                         bw.write(str);
    221.                                                         break;
    222.                                                 }
    223.                                         }
    224.                                        
    225.                                 } catch (IOException e1) {
    226.                                         // TODO Auto-generated catch block
    227.                                         //e1.printStackTrace();
    228.                                 }
    229.                                
    230.                                 try {
    231.                                         bw.close();
    232.                                 } catch (IOException e) {
    233.                                         // TODO Auto-generated catch block
    234.                                         //e.printStackTrace();
    235.                                 }
    236.                         } catch (FileNotFoundException e) {
    237.                                 // TODO Auto-generated catch block
    238.                                 //e.printStackTrace();
    239.                         }
    240.          }
    241. }