Python:从 socket 开始,搭建一个最基本功能的 FTP 服务器
摘要:这是一个对应客户端为 windows 资源管理器的简单 FTP 服务器,支持上传,下载,
新建文件夹,删除,重命名,不支持用户。
题外话:我们网络设计实验要求做的客户端,题目一看错,以为要写服务端,结果辛辛苦
苦写了大半之后才知道,后悔已经来不及……就只好硬着头皮先把这个做完。当时写这东
西的时候找不到网上教怎么做的(目测大神们都觉得太简单……),源码倒是不少,而自
己水平太低,源码基本没法看(这真不是自谦,看 pyftpdlib 的时候觉得那是一个天书),
只好自己边研究源码边折腾。
最后做出来 250 行,基本功能倒也不难实现,但水平有限什么异常处理,什么库,根本不
会,更不用说什么框架……
同样完成一个功能,具体下来有各种各样的实现方法,所谓提高不仅仅是会实现某个功能
还包括以更快的实现它,更成熟的代码风格,更有效的实现思路,更合理的利用已有的库
和架构,这些才是一个高手和码农的差异所在。
FTP 协议简介
FTP 协议,File Transfer Protocol,就是有关文件传输的协议,除了传输文件(上传、下
载),协议还支持在服务器进行简单的文件修改操作,如,删除,重命名,新建文件夹。
使得客户访问服务器上的文件就像访问本地文件一样。同时支持用户机制,可以给不同用
户不同权限。
基本流程及框架
在 FTP 服务器中,为了保证多用户登入,以及用户操纵不因传输数据被打断,所采用的多
线程机制如下图所示