數據加載中……
          JAVA:獲取本機外網IP地址的小工具
                本人的思路是讓程序去訪問(HttpURLConnection)一個可以查IP地址的,然后把這個網頁下載(FileOutputStream)到本地,通過(BufferedReader)去讀取那個臨時文件,最后通過操作文件(File),把臨時文件刪除,并以彈出“對話框”形式把獲取的“外網IP”顯示出來。

                提供幾個查IP反回頁面相對簡單的網址,訪問不同的網址,讀取關鍵字符串的時候可能會不同,請做出相應的修改。


                下面是程序的源碼,可以參考一下:

            1 import java.io.File;
            2 import java.io.FileReader;
            3 import java.io.BufferedReader;
            4 import java.io.FileOutputStream;
            5 import java.io.IOException;
            6 import java.io.InputStream;
            7 import java.net.HttpURLConnection;
            8 import java.net.MalformedURLException;
            9 import java.net.URL;
           10 import javax.swing.JOptionPane;
           11 
           12 /**
           13  * GetPublicIP 類
           14  * 
           15  * @author YeeYang
           16  * 
           17  * @version 1.0
           18  * 
           19  */
           20 public class GetPublicIP {
           21 
           22     /**/
           23     /**
           24      * 主程序入口
           25      * 
           26      * @param args
           27      *            輸入參數數組
           28      */
           29     public static void main(String[] args) {
           30         String pIP = GetPublicIP("http://www.bliao.com/ip.phtml""IP_Temp.tmp");
           31         JOptionPane.showConfirmDialog(null, pIP, "您的外網IP地址",
           32                 JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE);
           33     }
           34 
           35     /**/
           36     /**
           37      * 獲取已下載的文件里的字符串(IP地址)
           38      * 
           39      * @return 獲取的外網IP地址
           40      * @throws Exception
           41      */
           42     public static String GetPublicIP(String urlStr, String tempSaveStr) {
           43 
           44         // 下載操作 - 開始 :下載網絡文件獲取相關IP地址并保存為臨時文件IP.shtml
           45         int chByte = 0// 讀入輸入流的數據長度
           46         URL url = null// 網絡的url地址
           47         HttpURLConnection httpConn = null// http連接
           48         InputStream in = null// 輸入流
           49         FileOutputStream out = null// 文件輸出流
           50         try {
           51             url = new URL(urlStr);
           52             httpConn = (HttpURLConnection) url.openConnection();
           53             HttpURLConnection.setFollowRedirects(true);
           54             httpConn.setRequestMethod("GET");
           55             httpConn.setRequestProperty("User-Agent",
           56                     "Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)");
           57 
           58             in = httpConn.getInputStream();
           59             out = new FileOutputStream(new File("tempSaveStr"));
           60 
           61             chByte = in.read();
           62             while (chByte != -1) {
           63                 out.write(chByte);
           64                 // System.out.println(chByte);
           65                 chByte = in.read();
           66             }
           67         } catch (MalformedURLException e) {
           68             e.printStackTrace();
           69         } catch (IOException e) {
           70             e.printStackTrace();
           71         } finally {
           72             try {
           73                 out.close();
           74                 in.close();
           75                 httpConn.disconnect();
           76             } catch (Exception ex) {
           77                 ex.printStackTrace();
           78             }
           79         }
           80         // 下載操作 - 結束
           81 
           82         // 獲取IP操作 - 開始 : 從臨時文件IP.shtml中讀取IP地址
           83         String IP = null;
           84         try {
           85             BufferedReader br = new BufferedReader(
           86                     new FileReader("tempSaveStr"));
           87             IP = br.readLine();
           88             br.close();
           89         } catch (Exception e) {
           90             e.printStackTrace();
           91         }
           92         // 獲取IP操作 - 結束
           93 
           94         // 刪除操作 - 開始 :刪除臨時文件IP.shtml
           95         try {
           96             java.io.File myDelFile = new java.io.File("tempSaveStr");
           97             myDelFile.delete();
           98         } catch (Exception e) {
           99             System.out.println("Wrong Del");
          100             e.printStackTrace();
          101         }
          102         // 刪除操作 - 結束
          103 
          104         return IP;
          105     }
          106 }

                對于源碼中第55,56兩行,我是設置為模擬IE下載的,可以通過修改,達到模擬FireFox的目的,代碼如下:

          1 httpConn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14");

          posted on 2009-05-19 23:35 YeeYang 閱讀(5735) 評論(3)  編輯  收藏 所屬分類: 程序設計

          評論

          # re: JAVA:獲取本機外網IP地址的小工具 2010-02-01 11:29 龍屠日

          謝謝,我參考了貴文,改寫如下,請指教。

          http://www.aygfsteel.com/longturi/archive/2010/02/01/311480.html

            回復  更多評論    

          # re: JAVA:獲取本機外網IP地址的小工具 2011-04-04 10:12 wEixiNu

          學習了。
            回復  更多評論    

          # re: JAVA:獲取本機外網IP地址的小工具 2012-01-01 16:00 沫夏

          非常好的思路!
            回復  更多評論    
          主站蜘蛛池模板: 晋宁县| 昂仁县| 长海县| 离岛区| 长岛县| 读书| 依安县| 柘城县| 寿光市| 巴彦淖尔市| 增城市| 郧西县| 分宜县| 屯留县| 盐津县| 泗阳县| 元氏县| 东莞市| 鄂托克前旗| 蓝田县| 怀远县| 商南县| 湖州市| 始兴县| 榆中县| 山阴县| 金乡县| 巴塘县| 宁夏| 邵阳市| 米脂县| 桐梓县| 陆河县| 沙坪坝区| 西畴县| 社旗县| 凤阳县| 榆树市| 库尔勒市| 西吉县| 武穴市|