国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java實現隨意切換VPN改變上網地區

2019-11-26 15:06:38
字體:
來源:轉載
供稿:網友

在很多情況下,有些網絡應用的需求會要求模擬人在不同地區訪問網站和應用。因而切換IP也就應運而生了,然而IP作為一種稀缺資源不是隨便可以獲得的。因而會想到應用程序切換VPN來達到全國不同地區訪問網絡。因而有了以下方案。

前提:

1、windows操作系統
2、手工新建網絡連接

package com.selenium.test;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;public class ConnectNetWork {  /**   * @param args   * @throws Exception    */  public static void main(String[] args) throws Exception {    // TODO Auto-generated method stub    connAdsl("VPN_Test","test", "test");     Thread.sleep(1000);     cutAdsl("VPN_Test");     Thread.sleep(1000);   }  /**    * 執行CMD命令,并返回String字符串    */   public static String executeCmd(String strCmd) throws Exception {    System.out.println("cmd /c " + strCmd);    Process p = Runtime.getRuntime().exec("cmd /c " + strCmd);     StringBuilder sbCmd = new StringBuilder();    //這里很重要,設置GB2312解決亂碼!!!    //如果程序默認編碼就是GB2312,可以不寫    //我NetBeans默認用UTF8    BufferedReader br = new BufferedReader(new InputStreamReader(p         .getInputStream(), "GB2312"));     String line;     while ((line = br.readLine()) != null) {       sbCmd.append(line + "/n");     }    return sbCmd.toString();         /*    //如果整個過程換成這樣,就更清楚了。getInputStream是獲取最原始的字節流,    //cmd返回的是以GB2312雙字節編碼的字節流    InputStream in = p.getInputStream();    byte[] b = new byte[2000];    in.read(b);    String msg = new String(b, "GB2312");    //用GB2312解釋這堆字節,就可以組裝成一個正常的String了    //如果上邊不寫GB2312,等于這里用UTF8組裝,結果一樣    return msg;    */  }    /**    * 連接ADSL    * 語法: rasdial 連接名稱 username password    * 實例: rasdial 我的寬帶 hzhz1234567890 dfdfdfdfdf    */   public static boolean connAdsl(String adslTitle, String adslName, String adslPass) throws Exception {     System.out.println("正在建立連接.");     String adslCmd = "rasdial " + adslTitle + " " + adslName + " " + adslPass;     String tempCmd = executeCmd(adslCmd);     //String tempCmd = executeCmd("ping www.youku.com");         // 判斷是否連接成功     if (tempCmd.indexOf("已連接") > 0) {       System.out.println("已成功建立連接.");       return true;     } else {       System.err.println(tempCmd);       System.err.println("建立連接失敗");       return false;     }   }    /**    * 斷開ADSL    */   public static boolean cutAdsl(String adslTitle) throws Exception {     String cutAdsl = "rasdial " + adslTitle + " /disconnect";     String result = executeCmd(cutAdsl);          if (result.indexOf("沒有連接")!=-1){       System.err.println(adslTitle + "連接不存在!");       return false;     } else {       System.out.println("連接已斷開");       return true;     }   } }

  說明:上述代碼片段其實是調用了windows的rasdial命令。所以主要的功勞還是rasdial,java只是個外殼。又一次曲線救國。大家有更好的方法嗎?有更好的方法的話請告訴我,^_^

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潮州市| 虎林市| 轮台县| 平泉县| 西林县| 鹤山市| 杭锦旗| 边坝县| 淳安县| 大新县| 体育| 梨树县| 陆丰市| 巴中市| 阆中市| 青川县| 红原县| 黑山县| 大安市| 临江市| 应城市| 灵寿县| 湘潭县| 长白| 景宁| 西贡区| 全南县| 元阳县| 扶余县| 漠河县| 花莲市| 东明县| 桂阳县| 平阳县| 游戏| 大余县| 武冈市| 锦屏县| 碌曲县| 青冈县| 淮南市|