在网络设置里,把拨号上网的连接名字改成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..");
//}
}
}