互联网程序设计实验二_第1页
互联网程序设计实验二_第2页
互联网程序设计实验二_第3页
互联网程序设计实验二_第4页
互联网程序设计实验二_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告(二)课程名称:互联网程序设计年级:2017级实验日期: 姓名:学号:班级:实验名称:实验二 用SwingWorker改写线程(2学时)教师评语(成绩):一、实验目的及要求(1)理解并掌握服务器一客户一线程通用技术框架。 (2)理解并掌握 SwingWorker<T,V>后台线程技术。二、实验环境多媒体计算机 Windows7操作系统 JDK 8 Netbeans IDE8.2(开发语言Java)3、 实验内容(1)重温本章完成的 Echo 一客户一线程服务器设计。 (2)学习和理解 SwingWorker<T,V>这个类的用法。四、实验步骤(或记录)及相关代码

2、(1)实验步骤:重新修改页面设计:修改部分代码:原代码:/发送 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.setTe

3、xt(""); .start(); /休眠10ms try Thread.sleep(10); catch (InterruptedException ex) Logger.getLogger(ClientUI.class.getName().log(Level.SEVERE, null, ex); outStrNum-; 实验结果:(2)用SwingWorker<TV>替代Thread 类定义ClientThread类程序2.3(修改主要片段):public class ServerUI extends javax.swing.JFrame private S

4、erverSocket 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.setEna

5、bled(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(

6、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.ge

7、tRemoteSocketAddress()+ " 客户机编号: "+clientCounts+ " 会话开始.n"); /创建客户线程clientThread,实现一客户一线程 SwingWorker<List<String>,String> worker=new ClientThread(toClientSocket,clientCounts); worker.execute(); /end while catch (IOException ex) JOptionPane.showMessageDialog(null, ex.

8、getMessage(), "错误提示", JOptionPane.ERROR_MESSAGE); /end run() ).start(); /GEN-LAST:event_btnStartActionPerformed /关闭服务器之前 private void formWindowClosing(java.awt.event.WindowEvent evt) /GEN-FIRST:event_formWindowClosing /关闭服务器之前释放套接字 if (listenSocket!=null) listenSocket=null; if (toClientSo

9、cket!=null) toClientSocket=null; /GEN-LAST:event_formWindowClosing程序2.4(修改主要片段):public class ClientThread extends Thread private Socket toClientSocket=null;/会话套接字 private BufferedReader in; /网络输入流 private PrintWriter out; /网络输出流 private int clientCounts=0;/在线客户机总数 public ClientThread(Socket toClient

10、Socket,int clientCounts) /构造函数 this.toClientSocket=toClientSocket; this.clientCounts=clientCounts; Override public void run() try / 创建绑定到套接字toClientSocket上的网络输入流与输出流 in=new BufferedReader(new InputStreamReader(toClientSocket.getInputStream(),"UTF-8"); out=new PrintWriter(new OutputStreamWr

11、iter(toClientSocket.getOutputStream(),"UTF-8"),true); /5. 根据服务器协议,在网络流上进行读写操作 String recvStr; while (recvStr=in.readLine()!=null) /只要客户机不关闭,则反复等待和接收客户机消息 Date date=new Date(); DateFormat format=new SimpleDateFormat("yyyy-mm-dd hh:mm:ss"); String time=format.format(date); ServerUI

12、.txtArea.append(toClientSocket.getRemoteSocketAddress()+ " 客户机编号: "+clientCounts+" 消息:"+recvStr+" :"+time+"n"); /解析并显示收到的消息 /按照echo协议原封不动回送消息 SwingWorker<List<String>,String> worker=new ClientThread(toClientSocket,clientCounts); worker.execute(); out.println(toClientSocket.getLocalSocketAddress()+ " 客户机编号: "+clientCounts+" Echo消息:"+recvStr+" : "+time); /end while ServerUI.clientCounts-; /客户机总数减1 /远程客户机断开连接,线程释放资源 if (in!=null) in.close(); if (out!=null) out.close(); if (toClient

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论