《Java程序设计》综合性实验_2.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
综合性实验_2:文件上传器 实验类型:综合性实验 实验学时:4学时 涉及的知识点:Swing的界面设计、事件处理、Scoket编程、输入输出流、Swing线程等 1、实验目的 综合应用Swing的界面设计、事件处理、Scoket编程、输入输出流、Swing线程等知识,实现一个客户端向服务器传送文件的程序。 (1)掌握Swing的界面设计、事件处理的基本概念和基础知识,注意比较与AWT的异同点; (2)掌握输入输出流的操作,能够读取文件内容、带缓冲的流操作; (3)掌握Socket编程的基本概念和基础知识,理解服务器、客户端输入输出流的对应关系; (4)熟悉Swing线程的操作要点,初步掌握SwingWorker类的基本用法和操作“进度条”的知识。 2、实验内容 应用Swing的界面设计、事件处理、Scoket编程、输入输出、Swing线程等知识,实现一个客户端向服务器传送文件的程序,相关功能说明如下: 服务器端: 点击右下角的“启动”按钮,做好接收文件的准备;之后,该按钮显示为“关闭”,点击后可退出程序; 上方有一“进度条”,能动态显示一个文件传送的比例; 文件传输信息可在中间的文本消息区显示,点击底部的“清除”按钮,可清除文本区内容; 点击窗口右上角的“X”可关闭程序; 服务器处于接收状态时,可接收多个文件。 客户端: 上方有服务器IP、服务器端口输入框,端口号默认为9999; 传送文件可通过文件选择框进行选择,显示风格为Windows观感; 点击右下角的“发送文件”按钮,可向服务器发送文件; 上方 “进度条”,能动态显示一个文件传送的比例; 当文件传送完毕,还会弹出一个消息框,以提示用户; 文件传输信息可在中间的文本消息区显示,点击底部的“清除”按钮,可清除文本区内容; 点击窗口右上角的“X”可关闭程序; 客户端可操作多次,向服务器传送多个文件。 3、实验器材设备 安装了Windows XP(或其他版本的Windows操作系统)和Eclipse 3.x(或以上版本的版本)的PC机一台。 4.实验要求 由于Swing使用单线程机制来处理界面绘制和事件处理,如果在Swing中执行耗时的业务逻辑(如:数据库查询、文件操作等),会导致界面操作阻塞。解决方法是把耗时的业务逻辑放到另一线程中执行,通常是放入到SwingWorker的继承类中,保证UI界面在EDT中执行,快速反应。 服务器端由两个文件组成: FileReceiveServerr类:实现界面设计,包括点击按钮实现事件处理,端口设定为9999。为了能够动态显示“进度条”,需要设置PropertyChangeListener监听器,以便根据progress值变化,进度条显示不同值; FileReceiveTask类:继承SwingWorker类,把文件接收等耗时操作放在其doInBackground()方法中,首先从建立的TCP流中得到传送文件名与文件大小,然后开始接收文件内容字节并写入创建的文件对象流中,当传送字节数发生变化时,修改属性progress的值,再验证文件大小与写入的字节流是否相等,最后发送一条消息Done到文件发送方,告诉对方文件传输完成,可以关闭TCP流。 客户端与服务器类似,也由两个文件组成,不同之处是应指定服务器IP和端口号,向服务器发送文件信息和内容: FileTransferClient类:实现界面设计,包括点击“选择文件”、“发送文件”按钮实现事件处理,实现到服务端的连接等,创建FileTransferTask线程,并开始执行文件传送为了能够动态显示“进度条”,需要设置PropertyChangeListener监听器,以便根据progress值变化,进度条显示不同值; FileTransferTask类:继承SwingWorker类,把文件接收等耗时操作放在其doInBackground()方法中,首先建立Socket与服务器进行连接,再向服务器传送文件名与长度,然后读取文件内容字节,写入Socket字节流中,发送到接受方,当传送字节数发生变化时,修改属性progress的值。之后从Socket字节流中读取服务器接收完毕信息,弹出文件传输成功信息。, 5、实验步骤 (1)新建一个项目:File/New.../Java项目,创建一个Java类; (2)将下列代码复制到Java程序中。先阅读服务器端代码,再根据要求,填写客户端所缺的代码行、代码段: 服务器端代码: //服务器端:FileReceiveServerr类,功能:首先是在端口9999创建一个服务器套接字并开始监听连接 //说明:由于Swing使用单线程机制来处理界面绘制和事件处理,如果在Swing中执行耗时的业务逻辑(如:数据库查询、文件操作等)

文档评论(0)

四娘 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档