packagecom.sesame.network;importjava.io.BufferedReader;importjava.io.InputStreamReader;publicclassConnectNetWork {/*** 执行CMD命令,并返回String字符串*/publicstaticString executeCmd(String strCmd)throwsException {
Process p=Runtime.getRuntime().exec("cmd /c"+strCmd);
StringBuilder sbCmd=newStringBuilder();
BufferedReader br=newBufferedReader(newInputStreamReader(p
.getInputStream(),"GB2312")); //这里很重要,设置GB2312解决乱码!!!
//如果程序默认编码就是GB2312,可以不写
//我NetBeans默认用UTF8 String line;while((line=br.readLine())!=null) {
sbCmd.append(line+"\n");
}returnsbCmd.toString();
//如果整个过程换成这样,就更清楚了。getInputStream是获取最原始的字节流,
//cmd返回的是以GB2312双字节编码的字节流 InputStream in = p.getInputStream();
byte[] b = new byte[1000];
in.read(b);
String msg = new String(b,"GB2312"); //用GB2312解释这堆字节,就可以组装成一个正常的String了
//如果上边不写GB2312,等于这里用UTF8组装,结果一样
}/*** 连接ADSL*/publicstaticbooleanconnAdsl(String adslTitle, String adslName, String adslPass)throwsException {
System.out.println("正在建立连接.");
String adslCmd="rasdial"+adslTitle+""+adslName+""+adslPass;
String tempCmd=executeCmd(adslCmd);//判断是否连接成功if(tempCmd.indexOf("已连接")>0) {
System.out.println("已成功建立连接.");returntrue;
}else{
System.err.println(tempCmd);
System.err.println("建立连接失败");returnfalse;
}
}/*** 断开ADSL*/publicstaticbooleancutAdsl(String adslTitle)throwsException {
String cutAdsl="rasdial"+adslTitle+"/disconnect";
String result=executeCmd(cutAdsl);if(result.indexOf("没有连接")!=-1){
System.err.println(adslTitle+"连接不存在!");returnfalse;
}else{
System.out.println("连接已断开");returntrue;
}
}publicstaticvoidmain(String[] args)throwsException {
connAdsl("宽带","hzhz**********","******");
Thread.sleep(1000);
cutAdsl("宽带");
Thread.sleep(1000);//再连,分配一个新的IPconnAdsl("宽带","hzhz**********","******");
}
}