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()三种命令;

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

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

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

7ClientFrame.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文档”过程中有很小的几率出现文件残缺的现象,不稳定。

你可能感兴趣的:(作业)