内容发布更新时间 : 2024/12/22 21:36:56星期一 下面是文章的全部内容请认真阅读。
实验报告(二)
课程名称:互联网程序设计 姓名:
实验名称:实验二 用SwingWorker改写线程(2学时) 一、实验目的及要求 (1)理解并掌握服务器一客户一线程通用技术框架。 (2)理解并掌握 SwingWorker
实验日期: 班级:
教师评语(成绩):
修改部分代码: 原代码: //发送 out.println(outStr); txtInput.setText(\修改后代码:
//获取要发送的消息条数
String outStr_Num = txtInputNum.getText(); int outStrNum = Integer.parseInt(outStr_Num); //发送
while (outStrNum > 0) { new Thread() { @Override
public void run() { //发送
out.println(outStr); txtInput.setText(\ } }.start(); //休眠10ms try {
Thread.sleep(10);
} catch (InterruptedException ex) {
Logger.getLogger(ClientUI.class.getName()).log(Level.SEVERE, null, ex);
}
outStrNum--; } 实验结果:
(2)用SwingWorker
public class ServerUI extends javax.swing.JFrame {
private ServerSocket listenSocket=null; //侦听套接字
private Socket toClientSocket=null; //与客户机对话的套接字 public static int clientCounts=0; //客户数量编号 public ServerUI() { initComponents(); }
//启动服务器
private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnStartActionPerformed
try {
btnStart.setEnabled(false); //禁用按钮,避免重复启动 String hostName=txtHostName.getText();//主机名
int hostPort=Integer.parseInt(txtHostPort.getText());//端口 //构建服务器的SocketAddress格式地址 SocketAddress serverAddr=new
InetSocketAddress(InetAddress.getByName(hostName),hostPort);
listenSocket=new ServerSocket(); //创建侦听套接字 listenSocket.bind(serverAddr); //绑定到工作地址
txtArea.append(\服务器开始等待客户机连接...\\n\ } catch (IOException ex) { }
//创建一个匿名线程,用于侦听和接受客户机连接,并创建响应客户机的会话线程
new Thread(new Runnable() { public void run() { try {
while (true) { //处理客户机连接
toClientSocket=listenSocket.accept();//侦听并接受客户机连接
clientCounts++;//客户机数量加1
txtArea.append(toClientSocket.getRemoteSocketAddress()+ \客户机编号: \会话开始...\\n\
//创建客户线程clientThread,实现一客户一线程 SwingWorker,String> worker=new ClientThread(toClientSocket,clientCounts);
worker.execute();
} //end while } catch (IOException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), \错误提示\
} }//end run() }).start();