国产探花免费观看_亚洲丰满少妇自慰呻吟_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只是個外殼。又一次曲線救國。大家有更好的方法嗎?有更好的方法的話請告訴我,^_^

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高台县| 濉溪县| 锦州市| 新闻| 仁怀市| 河东区| 河西区| 灵川县| 响水县| 体育| 普宁市| 紫阳县| 阜南县| 辛集市| 平罗县| 威信县| 皋兰县| 时尚| 木兰县| 平度市| 呼玛县| 河源市| 兖州市| 新营市| 庆阳市| 盘山县| 门头沟区| 平南县| 甘谷县| 永春县| 西林县| 康定县| 金寨县| 邵阳市| 泾川县| 湖北省| 邯郸县| 海晏县| 夏津县| 岳阳县| 旅游|