1.本文件传输也是一个C/S模型,有服务器端和客户端
2.客户端希望实现以下功能
①查看服务器端文件列表,进行一些基础的操作,比如修改文件名,删除一个文件,新建文件夹
②下载文件,能够显示百分比,断点续传(比如我在下载的时候我有事情需要暂停下载,后来我在继续下载,能够在之前下载的基础上继续下载),校验
③上传文件,能够显示百分比,断点续传(比如我在下载的时候我有事情需要暂停下载,后来我在继续下载,能够在之前下载的基础上继续下载),秒传
3.在传输层使用tcp协议来实现,应用层要自己制定一个私有的协议,只有我们这个服务器客户端在使用
4.自己制定协议的时候可以自己随便制定,制定协议一般是在开发之前就已经制定好了
我们告诉服务器删除或者新建文件等操作时,那是如何让服务器明白我想要删除或者新建文件呢?
这时我们就需要制定协议了,由我们自己制定,比如:
c->s 01
01表示查看服务器端的文件列表,那么我向服务器端发送01,就表示想要查看服务器端的文件列表
s->c 02 #dir tmp#a.c file.txt
02表示应答,#作为分隔符,dir tmp表示目录文件,a.c和file.txt表示普通文件
c->s 03#a.c
03表示删除,a.c表示文件名,就是要删除a.c这个文件
s->c ok,err
服务器端向客户端恢复ok或者err,来表示成功或者失败,也可以用err1,err2,err3来表示不同的错误类型
并不是真的使用01 02 03来表示,只是一种建议的可能
实际上可能会使用4个字节进行存储,32个位可以表示很多种可能,不是用01,01可能是2个字节了,但是它只能表示4种可能
5.这个客户端不一定就是一台主机,也有可能是一个软硬件结合的一个设备,比如共享单车上的锁,智能手环,智能手表,自动贩卖机,etc计费等
6.这些小一点的设备开发基本上都是用的C/C++