互联网程序设计实验二(5页).doc

上传人:1595****071 文档编号:39445271 上传时间:2022-09-07 格式:DOC 页数:5 大小:211.50KB
返回 下载 相关 举报
互联网程序设计实验二(5页).doc_第1页
第1页 / 共5页
互联网程序设计实验二(5页).doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《互联网程序设计实验二(5页).doc》由会员分享,可在线阅读,更多相关《互联网程序设计实验二(5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

2、步骤:重新修改页面设计:修改部分代码:原代码:/发送 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(); /休眠10m

3、s try Thread.sleep(10); catch (InterruptedException ex) Logger.getLogger(ClientUI.class.getName().log(Level.SEVERE, null, ex); outStrNum-;实验结果:(2)用SwingWorker替代Thread 类定义ClientThread类程序2.3(修改主要片段):public class ServerUI extends javax.swing.JFrame private ServerSocket listenSocket=null; /侦听套接字 private

4、 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=txt

5、HostName.getText();/主机名 int hostPort=Integer.parseInt(txtHostPort.getText();/端口 /构建服务器的SocketAddress格式地址 SocketAddress serverAddr=new InetSocketAddress(InetAddress.getByName(hostName),hostPort); listenSocket=new ServerSocket(); /创建侦听套接字 listenSocket.bind(serverAddr); /绑定到工作地址 txtArea.append(服务器开始等待客

6、户机连接.n); catch (IOException ex) /创建一个匿名线程,用于侦听和接受客户机连接,并创建响应客户机的会话线程 new Thread(new Runnable() public void run() try while (true) /处理客户机连接 toClientSocket=listenSocket.accept();/侦听并接受客户机连接 clientCounts+;/客户机数量加1 txtArea.append(toClientSocket.getRemoteSocketAddress()+ 客户机编号: +clientCounts+ 会话开始.n); /创

7、建客户线程clientThread,实现一客户一线程 SwingWorkerList,String worker=new ClientThread(toClientSocket,clientCounts); worker.execute(); /end while catch (IOException ex) JOptionPane.showMessageDialog(null, ex.getMessage(), 错误提示, JOptionPane.ERROR_MESSAGE); /end run() ).start(); /GEN-LAST:event_btnStartActionPerfo

8、rmed /关闭服务器之前 private void formWindowClosing(java.awt.event.WindowEvent evt) /GEN-FIRST:event_formWindowClosing /关闭服务器之前释放套接字 if (listenSocket!=null) listenSocket=null; if (toClientSocket!=null) toClientSocket=null; /GEN-LAST:event_formWindowClosing程序2.4(修改主要片段):public class ClientThread extends Thr

9、ead private Socket toClientSocket=null;/会话套接字 private BufferedReader in; /网络输入流 private PrintWriter out; /网络输出流 private int clientCounts=0;/在线客户机总数 public ClientThread(Socket toClientSocket,int clientCounts) /构造函数 this.toClientSocket=toClientSocket; this.clientCounts=clientCounts; Override public vo

10、id run() try / 创建绑定到套接字toClientSocket上的网络输入流与输出流 in=new BufferedReader(new InputStreamReader(toClientSocket.getInputStream(),UTF-8); out=new PrintWriter(new OutputStreamWriter(toClientSocket.getOutputStream(),UTF-8),true); /5. 根据服务器协议,在网络流上进行读写操作 String recvStr; while (recvStr=in.readLine()!=null) /

11、只要客户机不关闭,则反复等待和接收客户机消息 Date date=new Date(); DateFormat format=new SimpleDateFormat(yyyy-mm-dd hh:mm:ss); String time=format.format(date); ServerUI.txtArea.append(toClientSocket.getRemoteSocketAddress()+ 客户机编号: +clientCounts+ 消息:+recvStr+ :+time+n); /解析并显示收到的消息 /按照echo协议原封不动回送消息 SwingWorkerList,Stri

12、ng 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 (toClientSocket!=null) toClientSocket.close(); catch (IOException ex) /end run /end class五、总结本次实验巩固了一客户一线程的主要内容,对客户机和服务器之间的消息传递有了更深的理解。对SwingWorker类也有了初步的学习。但是还不是非常熟练,另外,对SwingWorker的使用通过上网查询,也有了初步的了解。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁