java企业级开发大作业_java 大作业报告

一、项目描述

文件上传下载应用程序

二、功能分析

1、服务器端实现了多线程技术;

2、客户端可以向服务器上传所有格式的文件;

3、客户端可以获取服务器上的文件列表;

4、服务器上的文件列表使用Jlist组件显示;

5、客户端可以从获取到的列表中选择文件名,并下载到本地文件夹内;

三、程序设计

1、项目中包含两个包,一个Server包,一个Client包;

2、Server包中包含三个文件:TestServer.java、ServerFrame.java和ServerThread.java;

3、Client包中包含四个文件:TestClient.java、ClientFrame.java、  DownLoadThread.java 和UpLoadThread.java;

4、 服务器和客户端的主类分别是TestServer.java 和TestClient.java

5、 ServerFrame.java文件中

ServerFrame类继承Jframe类:构建服务器界面;

BackgroundJTextArea类继承JtextArea类:创建有背景图案的textArea;

6、 ServerThread.java文件中

(1) ServerThread类 实现了Runnable接口,定义了socket、数据输入输出流和显示文本域,在run函数中使用if-else结构来判定从客户端发来的命令,并执行sendFileList()、sendToClient()和getFileFromClient()三种命令;

(2)sendFileList():服务器向客户端发送文件列表

sendToClient():服务器向客户端发送文件;

getFileFromClient():服务器从客户端获取文件

7、ClientFrame.java文件中

(1)、ClientFrame类 继承Jframe类:构建客户端界面;

(2)、定义一个Jlist:用来显示文件列表,处于BorderLayout布局的南部;

三个Jbutton:用来接收上传、下载和获取文件列表三种命令;

(当进行上传操作时,添加JfileChooser组件用来在本地系统中选择目标文件;)

一个J TextField:用来显示所操作的文件名,设置为不可编辑;

(3)、编写public void actionPerformed(ActionEvent e)方法,该方法实现了对按钮单击事件的监听功能,

8、 DownLoadThread.java文件实现了对服务器中文件的下载,与Server中的sendToClient()方法对应。

实现了Runnable接口,在重写run()方法中:

第一步接收Server通过Socket传来的文件名,接收文件长度;

第二步创建一个新文件定义数据输入输出流;

第三步将Socket中的字符循环写入新建的文件中,完成后关闭写入流并执行JOptionPane.showMessageDialog(null, "文件下载成功")显示弹框。

注:ServerThread中的sendToClient()方法与之类似;

9、 UpLoadThread.java文件实现了对所选文件的上传,与Server中的getFileFromClient()方法对应。

实现了Runnable接口,在重写run()方法中:

第一步从界面获取到的文件名传给Server,向Server传入文件长度;

第二步将文件按字节传到数据流中,通过Socket端口传给Server;

第三步文件读完后,关闭读入流,弹框如上。

注:ServerThread中的getFileFromClient()方法与之类似;

四、测试

程序运行结果如图:

目前程序设计达到功能设计的要求。

Bug:上传“图片或word文档”过程中有很小的几率出现文件残缺的现象,不稳定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值