下面是拨号程序的原代码,大家可以看看,有什么不合理的地方请指出来。
package com.jack.telecom.dial; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class Dial extends JFrame{ private JLabel lblConName; private JTextField txtConName; private JLabel lblConNum; private JTextField txtConNum; private JLabel lblStartNum; private JComboBox cmbStartNum; private JLabel lblMaxNum; private JComboBox cmbEndNum; private JLabel lblPwd; private JPasswordField txtPwd; private JLabel label; private JLabel lblEndMessage; private JLabel lblStartMessage; private JLabel lblConNameMessage; private JTextArea txaConMessage; private JLabel lblMessage; private JTextArea txaMessage; private JButton btnConn; private StringBuffer showMessage; private String conNum; private String resultStr = ""; public Dial() { initComponents(); this.setTitle("电信拨号程序"); this.getContentPane().setLayout(null); this.setSize(400, 500); this.setVisible(true); // this.setBounds(100, 100, 400, 472); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } private void initComponents() { lblConName = new JLabel(); lblConName.setText("网络连接名称:"); lblConName.setBounds(10, 26, 91, 18); this.getContentPane().add(lblConName); txtConName = new JTextField(); txtConName.setText("jack"); txtConName.setBounds(107, 24, 87, 22); this.getContentPane().add(txtConName); lblConNum = new JLabel(); lblConNum.setText("连接帐号:"); lblConNum.setBounds(10, 54, 66, 18); this.getContentPane().add(lblConNum); txtConNum = new JTextField(); txtConNum.setText("n037113051"); txtConNum.setBounds(107, 50, 87, 22); this.getContentPane().add(txtConNum); lblStartNum = new JLabel(); lblStartNum.setText("起始数:"); lblStartNum.setBounds(10, 103, 66, 18); this.getContentPane().add(lblStartNum); cmbStartNum = new JComboBox(); cmbStartNum.setBounds(107, 99, 87, 27); this.getContentPane().add(cmbStartNum); lblMaxNum = new JLabel(); lblMaxNum.setText("最大拨号数:"); lblMaxNum.setBounds(10, 138, 91, 18); this.getContentPane().add(lblMaxNum); cmbEndNum = new JComboBox(); cmbEndNum.setBounds(107, 132, 87, 27); for (int i = 1; i <= 99; i++) { cmbStartNum.addItem(i); cmbEndNum.addItem(i); } this.getContentPane().add(cmbEndNum); lblPwd = new JLabel(); lblPwd.setText("密码:"); lblPwd.setBounds(10, 179, 91, 18); this.getContentPane().add(lblPwd); txtPwd = new JPasswordField(); txtPwd.setText("123456"); txtPwd.setActionCommand("*"); txtPwd.setBounds(107, 177, 94, 22); this.getContentPane().add(txtPwd); label = new JLabel(); label.setText("默认密码为123456"); label.setBounds(211, 179, 118, 18); this.getContentPane().add(label); lblEndMessage = new JLabel(); lblEndMessage.setText("选择您要进行拨号的最大限制"); lblEndMessage.setBounds(200, 138, 178, 18); this.getContentPane().add(lblEndMessage); lblStartMessage = new JLabel(); lblStartMessage.setText("选择您要进行拨号的起始数"); lblStartMessage.setBounds(200, 103, 178, 18); this.getContentPane().add(lblStartMessage); lblConNameMessage = new JLabel(); lblConNameMessage.setText("此名称为您拨号连接的名称"); lblConNameMessage.setBounds(200, 26, 178, 18); this.getContentPane().add(lblConNameMessage); txaConMessage = new JTextArea(); String msg = "请将您拨号帐号的前10位写上\n其中最后2位可以修改"; txaConMessage.setText(msg); txaConMessage.setBounds(200, 54, 158, 40); this.getContentPane().add(txaConMessage); lblMessage = new JLabel(); lblMessage.setText("连接显示信息:"); lblMessage.setBounds(10, 248, 118, 18); this.getContentPane().add(lblMessage); txaMessage = new JTextArea(); txaMessage.setEditable(false); JScrollPane scroll = new JScrollPane(txaMessage, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scroll.setBounds(10, 272, 368, 155); this.getContentPane().add(scroll); btnConn = new JButton(); btnConn.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { Thread t = new Thread() { public void run() { Process p = null; String conn = txtConNum.getText(); int startNum = ((Integer) cmbStartNum.getSelectedItem()).intValue(); int endNum = ((Integer) cmbEndNum.getSelectedItem()).intValue(); String user = txtConName.getText(); String password = txtPwd.getText(); showMessage = new StringBuffer(); for (int i = startNum; i < endNum; i++) { if (i < 10) { conNum = conn + "0" + i; } else { conNum = conn + i; } try { p = Runtime.getRuntime().exec( "rasdial.exe " + user + " " + conNum + " " + password); int result = p.waitFor(); if (result == 0) { resultStr = "连接成功"; // break; } else { resultStr = result + ""; } showMessage.append("当前连接帐号为:" + conNum + "\n" + "连接结果:" + resultStr + "\n"); txaMessage.setText(showMessage.toString()); // new Thread().start(); // showMsg(conNum, resultStr); // System.out.println("得到的数据:" + conNum + "\n" + // "连接结果:" // + resultStr + "\n"); } catch (Exception e1) { e1.printStackTrace(); } } } }; t.start(); } }); btnConn.setText("开始拨号"); btnConn.setBounds(107, 214, 106, 28); this.getContentPane().add(btnConn); } public void radial(String conNum,int startNum,int endNum,String user,String password){ Process p = null; String conn = txtConNum.getText(); showMessage = new StringBuffer(); for (int i = startNum; i < endNum; i++) { if (i < 10) { conNum = conn + "0" + i; } else { conNum = conn + i; } try { p = Runtime.getRuntime().exec( "rasdial.exe " + user + " " + conNum + " " + password); int result = p.waitFor(); if (result == 0) { resultStr = "连接成功"; // break; } else { resultStr = result + ""; } showMessage.append("当前连接帐号为:" + conNum + "\n" + "连接结果:" + resultStr + "\n"); txaMessage.setText(showMessage.toString()); } catch (Exception e1) { e1.printStackTrace(); } } } public static void main(String[] args) { Dial d = new Dial(); } }
你也可以自己运行一下代码,不过请确定你的网络是电信的。