东北大学-软件学院-15级-计算机网络实验报告.doc
文本预览下载声明
课程编号:B080109003
网络应用程序设计
实践报告
学号 班级 软件1501 费园园 名称 开设学期 2016-2017 第学期 第1周——第 报告日期 评定成绩 评定人签字
东北大学软件学院实践目的
(1)理解FTP通信原理;
(2)学习使用Socket和多线程编写简单的FTP服务器;
(3)学习使用Sokcet编写简单的FTP客户端;
(4)理解HTTP通信原理;
(5)学习使用Socket编写HTTP服务器;
(6)学习使用Socket编写HTTP客户端;
(7)理解WebSocket的通信原理;
(8)使用tomcat服务器搭建多人聊天室;
预习内容
FTP通信流程和通信命令
FTP 使用2个端口,一个数据端口和一个命令端口(也叫做控制端口)。这两个端口一般
是21(命令端口)和 20(数据端口)。
Socket编程
利用TCP协议进行通信的两个应用程序,server和client
交互过程:
服务器创建一个ServerSocket,然后调用accept方法等待客户连接
客户端程序创建一个socket并请求与服务器建立连接在连接的socket上进行单独的线程对话服务器开始等待新的连接请求(多线程)http的请求格式
http的应答模式
WebSocket概念 WebSocket通信规则实内容
编写简单的FTP客户端程序;编写简单的FTP服务器程序
实践内容
本实验要求完成以下功能(使用PASV模式):
功能名称 功能说明 优先级 获取文件列
表 给定用户工作目录,获得文件列表,包括文件名称,文件大小,文件创建时间 高 文件上传 上传文件到用户指定工作目录中 高 上传文件夹到用户指定工作目录中 低 支持断点续传 低 文件下载 给定用户工作目录,下载文件 高 给定用户工作目录,下载文件夹 低 支持断点续传 低 服务器创建一个ServerSocket,然后调用accept方法等待客户连接
客户端程序创建一个socket并请求与服务器建立连接在连接的socket上进行单独的线程对话客户端通过发送命令来使服务器做出相应的反应。
当发送PASV命令时候,服务器进入被动模式,并打开数据端口。客户端连接数据端口,两者之间即可以通过命令端口处理请求,数据端口传输数据,比如文件(夹)的上传、下载。
上传:将文件写进DataOutputStream输出流之中,流中的数据通过数据端口传输至服务器。服务器端同样从数据端口获取流DataInputStream,并将其输出为文件。此间需要传输文件的名字、大小等等参数。
文件夹的上传与下载:
类似于单文件操作。首先遍历文件夹,获取文件的fileList集合,发送文件夹名字,在另一端新建同名文件夹。循环发送所有文件,发送一个文件之后,另一端开始下载,下载完毕返回验证。开始发送第二个文件,继续下载,直至所有文件传输完毕。操作过程如流程图:
服务器开始等待新的连接请求(多线程)下图为项目流程:
开启被动模式:
if (s.equals(PASV)) {// 如果是被动模式
if (pasvSocket != null) {
pasvSocket.close();
}
try {
pasvSocket = new ServerSocket(0);
int pPort = pasvSocket.getLocalPort();
if (pPort 1024) {
pPort = 1025;
}
response(227 entering passive mode ( + InetAddress.getLocalHost().getHostAddress().replace(,, .)
+ , + pPort + ));
DataOutputStream dataOutputStream=new DataOutputStream(socket.getOutputStream());
dataOutputStream.writeUTF(InetAddress.getLocalHost().getHostAddress());
dataOutputStream.flush();
dataOutputStream.writeInt(pPort);
dataOutputStream.flush();
if (pasvSocket != null) {
dataSocket = pasvSocket.accept();// 阻塞
response(数据端口连接成功,继续输入命令:);
显示全部