java切换VPN让你像幽灵一样出现在全国各地
在很多情况下,有些网络应用的需求会要求模拟人在不同地区访问网站和应用。因而切换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只是个外壳。又一次曲线救国。大家有更好的方法吗?有更好的方法的话请告诉我,^_^...
java切换VPN让你像幽灵一样出现在全国各地的更多相关文章
- Java实现随意切换VPN改变上网地区
http://www.jb51.net/article/69267.htm 这篇文章主要介绍了Java实现随意切换VPN改变上网地区,本文直接给出实例代码,需要的朋友可以参考下 在很多情况下,有些网络 ...
- [大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world
[大数据从入门到放弃系列教程]在IDEA的Java项目里,配置并加入Scala,写出并运行scala的hello world 原文链接:http://www.cnblogs.com/blog5277/ ...
- java 切换
Android L之后推荐使用JDK7编译程序,这是自然发展规律,就像是4年前编译Android 1.6需要使用JDK5一样. 多版本JDK是可以共存的,只需要使用update-alternative ...
- selenium2+java切换窗口
package exercises; import java.util.ArrayList; import java.util.List; import java.util.Set; import o ...
- java切换jdk版本
目的:将jdk1.7切换为jdk1.6 1.原本安装了jdk1.7,环境变量也是配置的1.7相关路径,在cmd下输入[java -version]后,显示 [ C:\Users\Administrat ...
- Java切换JDK版本的方法及技巧
由于项目的不同安排,之前项目开发时,使用的jdk版本为1.8,现临时接手一以前项目,需要更换jdk版本. 安装 不再赘述,去Oracle网站(https://www.oracle.com/techne ...
- Java中,异常的处理及抛出
首先我们需要知道什么是异常? 常通常指,你的代码可能在编译时没有错误,可是运行时会出现异常.比如常见的空指针异常.也可能是程序可能出现无法预料的异常,比如你要从一个文件读信息,可这个文件不存在,程序无 ...
- java中的文件读取和文件写出:如何从一个文件中获取内容以及如何向一个文件中写入内容
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- 【POI xls Java map】使用POI处理xls 抽取出异常信息 --java1.8Group by ---map迭代 -- 设置单元格高度
代码处理逻辑: 代码流程: 1.首先需要创建一个实体 用来存储 相关信息 package com.sxd.test.unusualName; public class NameEntity { pri ...
随机推荐
- Android Studio 连接真机不识别
本人也是初学..写错的请大神多多批评指正! 不胜荣幸!! 强烈推荐使用真机测试..除非是最后关头要测试各个Android系统版本.. 本人遇到的连不上的原因有以下几种: 1 -- 手机设置问题. ...
- Last-Modify和Etag
Last-Modified和Etag Last-Modified是页面文件最后的修改时间,Etag相当于页面文件的hash. http request http respose If ...
- Redis命令大全&中文解释&在线测试命令工具&在线中文文档
在线测试命令地址:http://try.redis.io/ 官方文档:http://redis.io/commands http://redis.io/documentation Redis 命令参考 ...
- _fastcall
* 1楼 __fastcall具体含义 在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就 ...
- virtualBox切换到无缝模式后,如何调出菜单
host+c host就是指右边的那个ctrl键
- linux 生成KEY的方法与使用
转自:http://blog.163.com/tqq_0716/blog/static/7690741220110611350344/ 服务器A: 192.168.1.1 服务器B: 192.168. ...
- Django动态下载文件
前台提交查询条件,下载符合条件的EXCEL数据文件,后端视图中使用 xlwt 库来返回,如: objs = Units.objects.all() # 创建 Workbook 时,如果需要写入中文,请 ...
- 2015年12月03日 GitHub入门学习(五)Markdown语法简介
Markdown一种标记语言,语法简洁,不像Word或Pages有大量排版.字体设置.常用的标记符号不超过十个.被大量写作爱好者.撰稿人.作家所青睐. 一.Markdown的优点 专注你的文字内容而不 ...
- isNaN() 确认是否是数字
isNaN(x): 当变量 x 不是数字,返回 true: 当变量 x 是其他值,(比如,1,2,3),返回false.
- 解决Ckeditor编辑器不显示html实体,自动过滤html的问题
Ckeditor 4.5.4,在编辑的时候,使用源码编辑,当保存内容包含Javascript.Style标签的时候,数据库中有Javascript.Style标签,输入到页面也可以执行,但是我再次编辑 ...