Java实现随意切换VPN改变上网地区
http://www.jb51.net/article/69267.htm
这篇文章主要介绍了Java实现随意切换VPN改变上网地区,本文直接给出实例代码,需要的朋友可以参考下
在很多情况下,有些网络应用的需求会要求模拟人在不同地区访问网站和应用。因而切换IP也就应运而生了,然而IP作为一种稀缺资源不是随便可以获得的。因而会想到应用程序切换VPN来达到全国不同地区访问网络。因而有了以下方案。
前提:
1、windows操作系统
2、手工新建网络连接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
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 ; } } } |
Java实现随意切换VPN改变上网地区的更多相关文章
- java切换VPN让你像幽灵一样出现在全国各地
在很多情况下,有些网络应用的需求会要求模拟人在不同地区访问网站和应用.因而切换IP也就应运而生了,然而IP作为一种稀缺资源不是随便可以获得的.因而会想到应用程序切换VPN来达到全国不同地区访问网络.因 ...
- fedora -- java多版本切换
一般java开发时会下载多个版本的SDK,所以需要多个版本中进行切换 1. 设置JAVA_HOME环境变量需要打开.bashrc文件 2. 安装时使用alternatives将不同版本的java连接到 ...
- JAVA怎么在函数内改变传入的值
public class TestInt { public int aa(int i) { return i+4; } public static void main(String [] args) ...
- PLSQL连接本地oracle或远程oracle数据库,实现随意切换
转: PLSQL连接本地oracle或远程oracle数据库,实现随意切换 置顶 2018年01月12日 19:36:45 前方一片光明 阅读数 43542 版权声明:本文为博主原创文章,未经博主 ...
- ubuntu16.04同时使用 pyhton2.7和3.5,并随意切换
ubuntu16.04中默认已经安装了python2.7和python3.5 hanli@ubuntu:/usr/bin$ ls |grep python dh_python2 dh_python3 ...
- vant中tab标签切换时会改变内容滚动高度
vant的tabs标签页,标签切换时会改变内容区的滚动高度,这是因为内容区共用同一个父元素为滚动区域引起的,解决办法:在tabs的内容区域嵌套一层滚动区域,让每个内容区域使用单独的滚动元素就行了. ...
- Java 国际化 语言切换
Java国际化 我们使用java.lang.Locale来构造Java国际化的情境. java.lang.Locale代表特定的地理.政治和文化.需要Locale来执行其任务的操作叫语言环境敏感的 ...
- 关闭shift中英文切换 英文代码/中文注释随意切换着写。
x 背景 写代码的时候总是意外的就切成中文了,特别是代码中大小写切换的这种情况... 例如:"public static TimeZone CurrentTime..."publi ...
- Mac 下 Java 多版本切换
Step 1: 安装 jdk1.7 jdk1.8 路径如下: + /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk + /Library/Java/J ...
随机推荐
- Hibernate框架--对象的状态,缓存, 映射
回顾Hibernate第二天: 1. 一对多与多对一 2. 多对多 3. inverse/cascade 4. 关联关系的维护 一对多: <set name="映射的集合属性&quo ...
- Servlet、Filter、Listener、Interceptor基础
第一:Servlet Servlet是个接口,全限定名是javax.servlet.Servlet,在javax.servlet包中,在servlet-api.jar(在tomcat自带的lib文件夹 ...
- 十、oracle 常用函数
一.字符函数字符函数是oracle中最常用的函数,我们来看看有哪些字符函数:lower(char):将字符串转化为小写的格式.upper(char):将字符串转化为大写的格式.length(char) ...
- 《Windows驱动开发技术详解》之分层驱动程序
分层驱动程序概念 分层的目的是将功能复杂的驱动程序分解成多个简单的驱动程序.一般来说,他们是指两个或两个 以上的驱动程序,它们分别创建设备对象,并且形成一个由高到低的设备对象栈.IRP请求一般会被传送 ...
- IP子网掩码划分及设置
IP子网掩码划分及设置 定长子网掩码: 一.子网掩码的计算 TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的.网间网规模的迅速扩展对IP地址模式的威胁并不是 ...
- boolean类型相关
如果逻辑对象无初始值或者其值为 0.-0.null."".false.undefined 或者 NaN,那么对象的值为 false.否则,其值为 true(即使当自变量为字符串 & ...
- Django:之传递数据给JS、Ajax和Ajax CSRF认证
Django传递数据给JS 有时候我们想把一个list或者dict传递给javascript,处理后显示到网页上,比如要用js进行可视化到数据. 请注意:如果是不处理,直接显示在网页上,用Django ...
- 理解本真的REST架构风格
http://kb.cnblogs.com/page/186516/ 引子 在移动互联网.云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过“REST”这个buzzword,显然已经落 ...
- 高可用开源方案 Keepalived VS Heartbeat对比
最近因为项目需要,简单的试用了两款高可用开源方案:Keepalived和Heartbeat.两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考. ...
- 删除cygwin
由于cygwin 学习了linux 的用户所有者的方式,要删除有一定困难. 所以要右击 然后点 获取管理员所有权 几分钟之后 就可以删了