Java实现随意切换VPN改变上网地区_java

在很多情况下,有些网络应用的需求会要求模拟人在不同地区访问网站和应用。因而切换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
, 切换
改变
安卓2g3g4g随意切换、随意玩5元上网套餐、蜂窝2g3g4g随意切换、拖拉 随意 改变 形状、随意改变性别的动漫,以便于您获取更多的相关知识。

时间: 2024-10-30 15:31:35

Java实现随意切换VPN改变上网地区_java的相关文章

如何排除VPN无法上网的故障

Q:如何排除 VPN 无法上网的故障 A:很多公司都架设了自己的VPN 网络,对公司内移动办公的用户提供接入.但是大多数情况下很多用户发现只要连接上VPN,原本正常的网络浏览.QQ等访问Internet的通讯都被断掉了,而本地局域网的访问(跨网段的)也不行了. 很长时间以来笔者一直以为这个故障是VPN网络的通病,没办法解决.有一次一位外省的朋友到我司公干,他们公司用的是天融信的VPN软件,结果发现他连上后其他网段的访问也都很正常. 笔者很纳闷,于是仔细研究,最终在显示路由表的时候发现了区别(在命

游戏编程-java中的setBounds参数改变了没有什么变化

问题描述 java中的setBounds参数改变了没有什么变化 import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import javax.imageio.ImageIO;import java.awt.Image;class SFish1 extends JFrame{ JPanel panel = new JPanel(); Fish c; public SFish1() { add

手机4G网络连接vpn,上网速度挺快的,没有卡顿。可是连接了50M的wifi再连接vpn,基本不能

问题描述 手机4G网络连接vpn,上网速度挺快的,没有卡顿.可是连接了50M的wifi再连接vpn,基本不能 手机4G网络连接vpn,上网速度挺快的,没有卡顿.可是连接了50M的wifi再连接vpn,基本不能上网了,卡的要死.这是什么情况? 解决方案 这不好说,也许你的wifi本身有别的设备共享,或者网络有问题.是vpn限制的可能性小,是wifi的问题的可能性大 解决方案二: 你的wifi网络提供商做了一些限制了,我在单位和家里上同一个网站有的就不能打开,有的能打开. 解决方案三: 你的WiFi

【JAVA秒会技术之随意切换数据库】Spring如何高效的配置多套数据源

 Spring如何高效的配置多套数据源     真正的开发中,难免要使用多个数据库,进行不同的切换.无论是为了实现"读写分离"也好,还是为了使用不同的数据库("MySQL"或"Oracle"或"SQLServer").传统的方法,是配置多套Spring配置文件与Mysql配置文件,不仅配置起来较为混乱,而且切换及对事物的管理,也很麻烦.下面,博主就介绍一种方法,帮助大家解决"Spring如何高效的配置多套数据源&qu

Java 解惑: 你能通过改变一个单词来解决这个bug吗?

作为<Java解惑>这本书的脑残粉,我们一直想要寻找新的java谜题以满足我们的好奇心.但是很长时间以来,我们并没有搜集到比较满意的题目,所以为了向书中那些谜题致敬,我们决定自己造一个.解谜的好处就像书中所说的"一旦你解决了这些谜题,那些曾经愚弄过最具经验的Java程序员的隐晦且有违直觉的语言行为,将再也无法把你骗过",除此之外,解谜过程所带给我们的快乐也是难以比拟的.为了增加解谜的乐趣,我们决定从能完美解决问题的获胜者中挑选出一位,奖励其250美元的Amazon礼品卡.赶

三星I8552如何切换SIM卡上网?

可以按照以下步骤进行操作: 1.在待机页面下,点击[应用程序]图标.   2.点击[设定]图标.   3.点击[SIM卡管理器].   4.点击[数据服务网络],然后选择想要使用上网的SIM卡(这里以"SIM 2"为例).   5.点击[是]即可切换到另一张SIM卡上网.     切换后的页面.     设置完毕后,您就可以切换到相应的SIM卡实现上网功能了.

Windows server 2003 RRAS实现单网卡VPN代理上网

Windows server 2003的RRAS支持单网卡VPN功能,它的部署也很简单. 一.启用RRAS. 在windows server2003的administrative tools打开RRAS,并启用它. 如果你的系统没有关闭"windows firewall and internet connection sharing"服务没有关闭,在点击"配置和启用路由和远程访问"的时候会提示你要关闭它才能继续. 因为是单网卡,所以在接下来的步骤里要选择自定义配置.

WPS移动版新功能实现多文档随意切换 工作效率翻倍

多标签功能大家应该并不陌生,很多浏览器都使用了这种设计,不仅节省资源占用,更便于使用过程中在多个网页见切换.同样,在平板.手机等移动设备上,屏幕空间有限,只能依靠手指触摸来操作,因此,WPS移动版推出了多文档切换功能. 在Office文档处理中,经常需要通过对比多个文档来完成工作任务.所以多文档切换功能就变得至关重要.这是WPS移动版在同类软件中率先推出的功能.文字.表格.演示.PDF,多个文档同时打开并轻松切换,将为你在平板上处理工作增色不少. 操作过程并不复杂,下面将三种操作方法分享给大家:

java多种幻灯片切换特效(经典)_java

功能实现: 1.图片加载类ImageLoader实现: 1)用阻塞队列存储要图片:BlockingQueue images = new ArrayBlockingQueue<>(2); 2)用图片eof表示图片队列结束:Image eof = new WritableImage(1, 1); 3)循环读取指定图片,由于是阻塞队列,所以当队列满的时候线程会自动阻塞. 复制代码 代码如下: public void run() {         int id = 0;         try {