`

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

阅读更多
java实现动态切换上网IP (ADSL拨号上网)
转自:http://sesame.iteye.com/blog/434088

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

rasdial命令:

拨号

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


断网

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


java程序调用rasdial命令:

 
package com.sesame.network;   
  
import java.io.BufferedReader;   
import java.io.InputStreamReader;   
  
public class ConnectNetWork {   
  
    /**  
     * 执行CMD命令,并返回String字符串  
     */  
    public static String executeCmd(String strCmd) throws Exception {   
        Process p = Runtime.getRuntime().exec("cmd /c " + strCmd);   
        StringBuilder sbCmd = new StringBuilder();   
        BufferedReader br = new BufferedReader(new InputStreamReader(p   
                .getInputStream()));   
        String line;   
        while ((line = br.readLine()) != null) {   
            sbCmd.append(line + "\n");   
        }   
        return sbCmd.toString();   
    }   
  
    /**  
     * 连接ADSL  
     */  
    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);   
        // 判断是否连接成功   
        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;   
        }   
    }   
      
    public static void main(String[] args) throws Exception {   
        connAdsl("宽带","hzhz**********","******");   
        Thread.sleep(1000);   
        cutAdsl("宽带");   
        Thread.sleep(1000);   
        //再连,分配一个新的IP   
        connAdsl("宽带","hzhz**********","******");   
    }   
}  

package com.sesame.network;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ConnectNetWork {

    /**
     * 执行CMD命令,并返回String字符串
     */
    public static String executeCmd(String strCmd) throws Exception {
        Process p = Runtime.getRuntime().exec("cmd /c " + strCmd);
        StringBuilder sbCmd = new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(p
                .getInputStream()));
        String line;
        while ((line = br.readLine()) != null) {
            sbCmd.append(line + "\n");
        }
        return sbCmd.toString();
    }

    /**
     * 连接ADSL
     */
    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);
        // 判断是否连接成功
        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;
        }
    }
   
    public static void main(String[] args) throws Exception {
        connAdsl("宽带","hzhz**********","******");
        Thread.sleep(1000);
        cutAdsl("宽带");
        Thread.sleep(1000);
        //再连,分配一个新的IP
        connAdsl("宽带","hzhz**********","******");
    }
}  



执行结果:

Java代码
正在建立连接.  
已成功建立连接.  
连接已断开  
正在建立连接.  
已成功建立连接. 

如果你要重连功能的话,这样就可以了:

while(!connAdsl("宽带","hzhz**********","******")){
              Thread.sleep(1000);
}
分享到:
评论

相关推荐

    易语言ADSL拨号API

    易语言ADSL拨号API是针对ADSL(Asymmetric Digital Subscriber Line)拨号连接的一种编程接口,主要用于在易语言环境中实现ADSL的自动拨号、断线和连接状态管理等功能。这一API通常由一系列函数组成,允许开发者通过...

    java 利用配处理脚本实现ADSL拨号

    Java是一种广泛使用的编程语言,它不仅用于开发复杂的服务器应用程序,还可以用于编写脚本,实现自动化任务,例如在Windows操作系统中进行ADSL拨号。ADSL(Asymmetric Digital Subscriber Line)是一种宽带接入技术...

    ADSL拨号小精灵(自动更换IP)

    ADSL拨号小精灵简化了这一过程,让用户无需手动操作即可实现IP的自动切换。 描述中提到的“最好用的自动更换IP软件,不用安装,超级简单”,意味着这款软件不仅功能强大,而且易于使用。用户无需经过复杂的安装步骤...

    ADSL拨号上网配置

    ### ADSL拨号上网配置详解 ...通过上述步骤,不仅能够实现单机拨号上网,还能通过ADSL Modem和路由器轻松实现多用户共享上网,大大提高了网络资源的利用率。这种配置方法简单易行,适合家庭及小型办公环境使用。

    易语言恒信ADSL拨号

    5. **错误处理和日志记录**:在实现拨号功能时,错误处理是必不可少的。易语言提供了异常处理机制,确保程序在遇到问题时能正常运行。同时,日志记录有助于调试和排查问题。 6. **多线程应用**:为了保证用户体验,...

    圣者ADSL换IP拨号器

    【圣者ADSL换IP拨号器】是一款专为网络用户设计的软件工具,主要用于自动进行ADSL拨号,以实现IP地址的快速切换。在互联网世界中,IP地址是每个设备独一无二的标识,而ADSL(Asymmetric Digital Subscriber Line)是...

    圣者ADSL换IP拨号器.(免费版)

    【标签】包括"ADSL切换IP"、"ADSL拨号器"、"自动拨号器"、"自动换IP"以及"免费ADSL拨号器",这些标签清晰地定义了软件的主要功能。"ADSL切换IP"和"ADSL拨号器"表明这款软件可以处理ADSL网络环境下的IP地址更换;...

    拨号软件 ADSL拨号

    综合以上信息,我们可以推测这是一个用于ADSL宽带连接的拨号软件,其特色在于能帮助用户频繁更换IP地址,尤其适用于需要大量IP资源的活动,如网络投票。软件的操作界面和具体功能细节未知,但通常这类软件会包括连接...

    ADSL拨号换ip工具(带说明).rar

    这是因为ADSL是一种动态IP分配方式,每次断开再连接时,ISP会分配新的IP。 2. 换IP需求:用户可能需要频繁更换IP,比如网络营销中避免被目标网站识别和限制,或者进行网络测试,模拟不同地区的访问情况。 3. 工具...

    ADSL拨号上网加速补丁

    标题中的“ADSL拨号上网加速补丁”指的是针对ADSL(Asymmetric Digital Subscriber Line)宽带连接的一种优化工具。ADSL是一种广泛应用于家庭和小型企业的宽带接入技术,它利用现有的电话线基础设施提供高速数据传输...

    利用Win2003中的NAT实现基于ADSL拨号上网(家庭用户)教程

    在本文中,我们将深入探讨如何在Windows Server 2003 (Win2003) 操作系统中利用网络地址转换(NAT)技术来实现家庭用户基于ADSL(Asymmetric Digital Subscriber Line)拨号上网的教程。首先,我们需要了解NAT的基本...

    USB ADSL 拨号上网 Linux 下

    在Linux系统中,使用USB ADSL拨号上网是一种常见的连接方式,尤其对于那些没有内置调制解调器或者想要在不同地点便捷上网的用户来说。本文将深入探讨如何在Linux环境下配置USB ADSL拨号上网,包括所需的技术背景、...

    易语言多线程adsl拨号演示例程

    使用这些接口,开发者可以编写出控制ADSL Modem进行拨号上网的程序。 精易模块是易语言的一个扩展库,它提供了大量的底层函数和组件,增强了易语言的功能,特别是在系统操作、网络通信、文件处理等方面。在这个ADSL...

    ADSL.rar_adsl 拨号_dial up in vb_拨号上网_自动拨号

    5. **VB实现自动拨号**:在VB中,可以使用Winsock控件或者API函数(如RASDial)来实现拨号功能。通常需要设置拨号参数(如ISP名称、用户名、密码),然后调用相应的函数进行连接。当网络断开时,可以通过定时检查...

    易语言源码易语言恒信ADSL拨号源码.rar

    3. **ADSL拨号**:ADSL(Asymmetric Digital Subscriber Line)是非对称数字用户线技术,是宽带上网的一种方式。ADSL拨号是指通过ADSL调制解调器连接到Internet服务提供商(ISP)的过程,用户需要输入用户名和密码进行...

    dialup_src_bin.rar_ADSL拨号_delphi ip_delphi 拨号_ip

    通过学习这个项目的源代码,开发者可以学习如何在Delphi中进行网络编程,如何使用RAS API进行ADSL连接管理,如何设计用户界面以实现自动拨号和IP地址切换,以及如何记录和显示日志信息。对于初学者,这是一个了解...

    adsl-java.rar_ADSL Java_Java 自动拨号_java adsl

    在Java编程环境下,实现ADSL自动拨号和网页刷新功能是一项实用的技术,尤其对于网络自动化测试或者远程管理网络设备时非常有用。本篇将详细解析这个“adsl-java.rar”项目中的核心知识点。 首先,我们要了解Dial....

    易语言ADSL拨号API源码

    - 连接管理:实现拨号、断线的逻辑,可能包括处理用户输入、检查网络状态、调用API函数等。 - 错误处理:当API调用失败时,捕获错误并给出相应提示。 - 日志记录:记录拨号过程中的关键信息,便于分析问题和优化程序...

    ADSL拨号助手v1.2

    一旦连接到互联网,ADSL拨号助手v1.2会实时展示用户的外网IP地址,这通常是由ISP(Internet Service Provider,互联网服务提供商)分配的,用于标识用户在互联网上的唯一位置。此外,它还会显示当前的拨号名称,这...

    易语言多线程adsl宽带拨号源码

    在标题中提到的“易语言多线程adsl宽带拨号源码”是一个使用易语言编写的程序,该程序实现了多线程环境下ADSL(Asymmetric Digital Subscriber Line)宽带的拨号功能。在多线程编程中,每个线程可以独立执行不同的...

Global site tag (gtag.js) - Google Analytics