整体归纳来讲就是设计一个Web服务器的流程,将执行流程分为简单的步骤,每一个步骤做为一个模块来实现。服务器
一、总体设计并发
服务器程序发送文件给客户端或者从客户端接收文件,每次通讯只能作一次文件传输,传输完毕后准备处理下一次通讯。客户端程序,接收或者发送一个文件后就能够退出。所以,服务器短程序是一个死循环,处理一次以后不退出,继续监听。客户端程序处理一个链接就能够了。spa
二、客户端程序设计设计
客户端程序主要任务有3个,ci
(1)分析用户输入的命令字符串
(2)根据命令向服务器端发出请求get
(3)等待服务器返回请求的结果table
第一个任务是分析命令,本FTP程序客户端给用户提供8种命令,以下表所示:程序设计
用户输入的命令服务器端 |
命令含义 |
get |
从服务器获得文件 |
put |
向服务器传输文件 |
cd |
进入客户端的目录 |
!cd |
进入服务器端的目录 |
ls |
列出客户端当前目录的内容 |
!ls |
列出服务器端当前目录的内容 |
connect |
链接服务器 |
bye |
退出程序 |
客户端经过标准输入获得一个字符串,分析字符串获得命令和参数,所以须要固定字符串的输入。固定好输入格式以后,客户端将字符串进行拆分判断来完成对应的功能。用户输入的每个命令,都会经过客户端给服务器发送一个请求码,服务器端经过识别这个请求码来判断客户端的请求,从而进行处理。下面是用户输入的命令与对应请求的表:
用户输入的命令 |
对应的请求 |
get |
GET |
put |
PUT |
cd |
不须要与服务器通讯,无请求 |
!cd |
CD |
ls |
不须要与服务器通讯,无请求 |
!ls |
LS |
connect |
发出链接请求,不须要服务器端额外处理,因此没有请求码 |
bye |
BYE |
三、服务器端程序设计
服务器程序与客户端程序相似,也是有3个任务。
(1)分析请求代码
(2)根据请求代码作出相应的处理
(3)等待返回结果或者应答信息
根据上边客户端的设计咱们知道在服务器端对应须要处理的请求码只有5种,以下表所示:
请求代码 |
对应的处理 |
GET |
向客户端传输文件 |
PUT |
接受客户端的文件 |
CD |
进入目录 |
LS |
将当前目录内用传输给客户端 |
BYE |
断开链接 |
分清楚任务以后,有两个主要环节须要明确,就是通讯协议和服务器模型,本程序的通讯协议分为两种。一种是get命令、put命令和!ls命令须要传输文件内容的命令,采用“四次握手”的通讯协议;一种是!cd命令这种不须要传输文件内容的命令采用“两次握手”的通讯协议。
服务器端使用并发服务器的模型,若是客户端发生阻塞,服务器依然能处理其余链接。