[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]java代码控制拨号上网,抓数据利器

上一篇:[备忘]Tomcat配置APR
下一篇:[备忘]CAT日志埋点,部署方法简单记录

添加日期:2017/7/28 6:51:34 快速返回   返回列表 阅读1903次
在网络设置里,把拨号上网的连接名字改成adslGo即可。
想换ip时,调用changeip方法或changeipNow

adslUtil.java


package com.xxx.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class AdslUtil {

    /**
     * 上次重启时间(毫秒数).
     */
    static long lastTime = System.currentTimeMillis();

    /**
     * 执行CMD命令,并返回String字符串
     */
    public static String executeCmd(String strCmd) throws Exception {
        Process p = Runtime.getRuntime().exec("cmd /c " + strCmd);
        p.waitFor();
        StringBuilder sbCmd = new StringBuilder();
        BufferedReader br = new BufferedReader(new InputStreamReader(
                p.getInputStream(), "GB2312"));
        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);
        System.out.println(tempCmd);
        // 判断是否连接成功
        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);
        System.out.println(result);
        if (result.indexOf("没有连接") != -1) {
            System.err.println(adslTitle + "连接不存在!");
            return false;
        } else {
            System.out.println("连接已断开");
            return true;
        }
    }

    /**
     * 测试网络是否连接
     */

    public static boolean isConnect() {
        boolean connect = false;
        Runtime runtime = Runtime.getRuntime();
        Process process;
        try {
            process = runtime.exec("ping " + "126.com");
            InputStream is = process.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            StringBuffer sb = new StringBuffer();
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }
            System.out.println("返回值为:" + sb);
            is.close();
            isr.close();
            br.close();

            if (null != sb && !sb.toString().equals("")) {

                if (sb.toString().indexOf("TTL") > 0) {
                    // 网络畅通
                    connect = true;
                } else {
                    // 网络不畅通
                    connect = false;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return connect;
    }

    /**
     * 换IP地址(间隔指定的分钟数换一次).
     * 
     * @return
     */
    public static boolean changeIp() {

        // 几分钟换一次IP
        int second = Integer.valueOf(ConfigUtils.getString("adslSecond"));
        long curr = System.currentTimeMillis();
        if (curr - lastTime < 60000 * second) {
            return true;
        }

        try {

            // 断线
            System.out.println("to offline.");
            cutAdsl("adslGo");

            // 重连
            System.out.println("to online..");
            
            boolean ok = connAdsl("adslGo", ConfigUtils.getString("adslUser"),
                    ConfigUtils.getString("adslPwd"));
            int count=0;
            while (!ok) {
                count++;
                System.out.println("fail,retry " + count);
                Thread.sleep(2000);
                ok = connAdsl("adslGo", ConfigUtils.getString("adslUser"),
                        ConfigUtils.getString("adslPwd"));
            }
            System.out.println("online OK.");
            

            lastTime = System.currentTimeMillis();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    
    /**
     * 立刻换IP地址.
     * 
     * @return
     */
    public static boolean changeIpNow() {

        try {

            // 断线
            System.out.println("to offline.");
            cutAdsl("adslGo");

            // 重连
            System.out.println("to online..");
            
            boolean ok = connAdsl("adslGo", ConfigUtils.getString("adslUser"),
                    ConfigUtils.getString("adslPwd"));
            int count=0;
            while (!ok) {
                count++;
                System.out.println("fail,retry " + count);
                Thread.sleep(2000);
                ok = connAdsl("adslGo", ConfigUtils.getString("adslUser"),
                        ConfigUtils.getString("adslPwd"));
            }
            System.out.println("online OK.");
            
            lastTime = System.currentTimeMillis();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    // 测试代码
    public static void main(String[] args) throws InterruptedException {
        if (args.length != 2) {
            System.out.println("java ConnectNetWork uuu ppp");
            return;
        }
        System.out.println("user:" + args[0]);
        System.out.println("pass:" + args[1]);

        //while (true) {
            try {
                System.out.println("to offline.");
                cutAdsl("adslGo");

                System.out.println("to online..");
                connAdsl("adslGo", args[0], args[1]);
            } catch (Exception e) {
                e.printStackTrace();
            }

            //Thread.sleep(60000);
            //System.out.println("to changeIp..");
        //}

    }
}

 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved