java实现动态切换上网IP (ADSL拨号上网)

动态切换IP的实现主是也由Windows的rasdial命令提供的,其实不是java的功劳,java只是调用一下bat脚本而已:

rasdial命令:

拨号

Java代码  

  1. 语法: rasdial  连接名称 username password
  2. 实例: rasdial 我的宽带 hzhz1234567890 dfdfdfdfdf

断网

Java代码  

  1. 语法:rasdial  连接名称 /disconnect
  2. 实例: rasdial 宽带  /disconnect

java程序调用rasdial命令:

Java代码  

  1. package com.sesame.network;
  2. import java.io.BufferedReader;
  3. import java.io.InputStreamReader;
  4. public class ConnectNetWork {
  5. /**
  6. * 执行CMD命令,并返回String字符串
  7. */
  8. public static String executeCmd(String strCmd) throws Exception {
  9. Process p = Runtime.getRuntime().exec("cmd /c " + strCmd);
  10. StringBuilder sbCmd = new StringBuilder();
  11. BufferedReader br = new BufferedReader(new InputStreamReader(p
  12. .getInputStream()));
  13. String line;
  14. while ((line = br.readLine()) != null) {
  15. sbCmd.append(line + "\n");
  16. }
  17. return sbCmd.toString();
  18. }
  19. /**
  20. * 连接ADSL
  21. */
  22. public static boolean connAdsl(String adslTitle, String adslName, String adslPass) throws Exception {
  23. System.out.println("正在建立连接.");
  24. String adslCmd = "rasdial " + adslTitle + " " + adslName + " "
  25. + adslPass;
  26. String tempCmd = executeCmd(adslCmd);
  27. // 判断是否连接成功
  28. if (tempCmd.indexOf("已连接") > 0) {
  29. System.out.println("已成功建立连接.");
  30. return true;
  31. } else {
  32. System.err.println(tempCmd);
  33. System.err.println("建立连接失败");
  34. return false;
  35. }
  36. }
  37. /**
  38. * 断开ADSL
  39. */
  40. public static boolean cutAdsl(String adslTitle) throws Exception {
  41. String cutAdsl = "rasdial " + adslTitle + " /disconnect";
  42. String result = executeCmd(cutAdsl);
  43. if (result.indexOf("没有连接")!=-1){
  44. System.err.println(adslTitle + "连接不存在!");
  45. return false;
  46. } else {
  47. System.out.println("连接已断开");
  48. return true;
  49. }
  50. }
  51. public static void main(String[] args) throws Exception {
  52. connAdsl("宽带","hzhz**********","******");
  53. Thread.sleep(1000);
  54. cutAdsl("宽带");
  55. Thread.sleep(1000);
  56. //再连,分配一个新的IP
  57. connAdsl("宽带","hzhz**********","******");
  58. }
  59. }

执行结果:

Java代码  

  1. 正在建立连接.
  2. 已成功建立连接.
  3. 连接已断开
  4. 正在建立连接.
  5. 已成功建立连接.

小结:
实现这个功能的最主要在于bat命令能支持这个功能,和以前写过的自动设置ip功能类似,这些功能实现java其实是很不方便的,看来要优雅的实现和windows操作系统相关的行为,学习windows编程才行。

java实现动态切换上网IP (ADSL拨号上网)

时间: 2024-10-12 17:10:35

java实现动态切换上网IP (ADSL拨号上网)的相关文章

利用ADSL拨号上网方式如何搭建服务器

序:搭建服务器需要两个条件硬件服务器和固定公网IP,随便一台个人电脑都可以作为硬件服务器,就剩下一个问题,如何获得一个固定公网IP. 第一章 扫盲:ADSL拨号上网方式,本地IP与公网IP的区别 一.如何查看本地IP 方法:进入Dos,输入命令ipconfig即可看到自己的内网IP地址,这个地址作为局域网内部交流使用. 二.如何查看公网IP 方法:IE浏览器输入网址:http://www.ip138.com,可以看到本机访问互联网时的IP地址是163.125.59.28 第二章 一.公网IP是在

光纤专线跟ADSL拨号上网对企业的作用

企业宽带与家庭宽带的区别 ------------------------------我是分割线---------------------------------- 我作为一个行业资深老鸟来简单作答一下,回答不充分或不妥的地方望各位大大指正 深圳的企业,可以找我装企业光纤专线,我就是做这行的-18923896404,企鹅-3302510376 ------------------------------我是分割线---------------------------------- 一般来说 如果

ADSL拨号上网或者光纤上网设置概要(原创)

不管是在梧州设置光纤还是在太平设置ADSL拨号上网每次设置上网一体机的时候都是遇到各种麻烦...这次又是弄了N久,每次问题各不一样.总结一下操作过程,方便以后又遇问题回头查询自个微博.一.设置电话线的拨号上网:1.把语音分离器分过来的线接入一体机,再进行设置,如果ADSL灯常亮了说明通畅,在设置自动搜索VPI/VCI值,如果VPI/VCI值自动搜索失败,就百度自己城市的VPI/VCI值,梧州的VPI/VCI值是:0/35(VPI:0.VCI:35).2.如果ADSL灯闪烁,一直没有变成常亮,就把

ubuntu14.04配置ADSL拨号上网

配置 ADSL 打开应用程序菜单,依次选择附件 - 终端. sudo pppoeconf  依照步骤提示进行,在输入用户名的时候注意把username清空后输入,否则可能会出现usernameXXXXX的现象. 开机后,先在终端:sudo poff -a 输入密码 再sudo pon dsl-provider 这样和在XP的宽带连接差不多. ------------------------------------------------- 注意:以下命令不是设置步骤,只是教你如何进行adsl拨号

Ubuntu ADSL拨号上网

一直在家用接ADSL的无线wifi上网,最近用了很久的NetGear无线路由器被我毁了,只好暂时用有线了.在Ubuntu Linux下也可直接使用ADSL拨号上网. 1.连接设备 这没什么可多说的,一般都是联通上门服务.电话线连接联通ADSL猫的ADSL口,电脑连接任何一个LAN口. 2.编辑连接 鼠标点击任务栏托盘区的网络连接图标->编辑连接,打开“网络连接”对话框 3.新建DSL连接 输入联通公司分配的用户名和密码,按“保存”即可. 4.拨号 鼠标点击任务栏托盘区的网络连接图标->DSL

Cisco路由配置:通过固定IP或拨号上网cisco路由配置

首先介绍固定IP上网配置: 现有客户需要使用思科的2811路由器上网,用户为10M光纤,申请了16个固定IP, IP为58.240.160.2-58.240.160.14, 默认网关是58.240.160.1.内网IP段192.168.1.0, 客户要实现192.168.1.10-192.168.1.20之间的IP可以上网,其余的不可以. 路由器e1/0接口为WAN外网接口,e1/1为LAN内网接口 拓扑图如下: Cisco2811#configure terminal Cisco2811(co

centos ADSL 拨号上网设置

下面主要介绍一下,在CentOS命令行环境下如何配置 ADSL 联网: 1.确保安装了网卡并能正常运行,使用命令查看一下网卡状态: [[email protected] simon]# /sbin/ifconfig eth0 2.在系统中不要设置默认路由(网关),让 ADSL 拨号后自动获得. 3.查看是否安装了 pppoe 软件包. [[email protected] simon]# rpm -qa|grep ppp0e 没有显示,说明没有安装,系统光盘里会有这个安装包,或去下载一个 rpm

Linux操作系统上ADSL拨号上网的方法详解

1.安装 yum install rp-pppoe.x86_64 2.配置PPPOE客户端软件 安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时使用配置文件中的用户名.密码等参数.我们不必手工改动这个文件,可以使用adsl-setup这个工具进行配置: #/usr/sbin/adsl-setup 当出现 >>> Enter your PPPoE user name : 输入ADSL帐号的用户名 当出现 >>> En

解决ADSL拨号上网错误691:由于域上的用户名和密码无效而拒绝访问

此错误是发生在我家用一个台式机拨号上网没问题,但笔记本拨号上网就有问题. 问题解决发现是电信初次拨号上网会绑定这个拨号用户的MAC网卡地址,将台式机的MAC地址配置到我的笔记本上就ok了! 691错误,就是用户或密码或域错误 解决步骤: 1.用户密码确认输入无误 2.修改网卡绑定地址,填写的值自动会转换为大写并且不需要输入"-"符号 查看机器的MAC地址方法 CMD>>ipconfig/all 要修改的值就是Physical Address的值 修改网卡也就是MAC地址方法