python如何搭建FTP服务器

  介绍

这篇文章主要介绍了python如何搭建FTP服务器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

一、了解FTP服务器

<李>

FTP(文件传输协议),运行在tcp洗衣上,使用两个端口,即数据端口和命令端口,也称之为控制端口。默认情况下,20是数据端口,21是控制端口。

<李>

FTP有两种传输模式:主动模式和被动模式

(1)主动模式:客户端首先从任意的非特殊端口n(大于1023的端口,也是客户端的命令端口)连接FTP服务器的命令端口(默认是21),向服务器发出命令港口n + 1,告诉服务器自己使用n + 1端口作为数据端口进行数据传输,然后在n + 1端口监听。服务器收到港口n + 1后向客户端返回一个“消”,然后服务器从它自己的数据端口(20)到客户端先前指定的数据端口(n + 1端口)的连接,最后客户端向服务器返回一个“应答”。

 python如何搭建FTP服务器

(2)被动模式:为了解决服务器发起到客户端的连接问题,开发了被动FTP,或者叫做PASV,当客户端通知服务器处于被动模式时才启用。在被动模式下,命令连接和数据连接都是有客户端发起。当开启一个FTP连接时,客户端打开两个非特权的任意端口(大于1023)。第一个端口连接服务器的21端口,但是与主动方式不同,客户端不会提交港命令并允许服务器来回连接数据端口,而是提交PASV命令。这样做的结果就是服务器会开启任意一个非特权端口,并且发送港口p命令给客户端,然后客户端发起从本地端口n + 1到服务器端口p的连接来传输数据

 python如何搭建FTP服务器

总结:主动模式有利于对FTP服务器的管理,但是不利于对客户端的管理。因为FTP服务器企图和客户端的高位随机端口建立连接,而这个端口很有可能会被客户端的防火墙阻塞掉。被动模式相反。

二,利用python搭建FTP服务器

python搭建FTP需要利用到pyftpdlib模块

1。安装pyftpdlib模块

C: \ \用户LTP> pip3  install  pyftpdlib      C:\Users\ LTP>, python3  -m  pyftpdlib  -p  21

2。找到pyftpdlib模块源文件所在目录

C: \ \用户LTP> python3   ……   在祝辞祝辞import  pyftpdlib   在祝辞祝辞pyftpdlib.__path__   [& # 39;/usr/地方/python3/lib/python3.7/网站/pyftpdlib& # 39;]

3。到pyftpdlib目录下

发现文件系统。py和处理程序。py两个文件,先执行备份

C: \ \ LTP>用户,dir  E: \ PycharmProjects \ untitled \ project01 \ venv \ Lib \网站\ pyftpdlib   2021/05/15 , 17:50 ,,, & lt; DIR>,,,,,,,,,。   2021/05/15 , 17:50 ,,, & lt; DIR>,,,,,,,,,, . .   2017/12/30 , 16:44 ,,,,,,,,,,, 35246, authorizers.py   2021/05/15 , 17:49 ,,,,,,,,,,, 24798, filesystems 作用;副本. py   2021/05/15 , 17:49 ,,,,,,,,,,, 24798, filesystems.py   2019/10/24 , 16:26 ,,,,,,,,,, 144635, handlers 作用;副本. py   2019/10/24 , 16:26 ,,,,,,,,,, 144635, handlers.py   2017/12/30 , 16:44 ,,,,,,,,,,, 36769, ioloop.py   2019/10/24 , 16:26 ,,,,,,,,,,,, 5823, log.py   2019/10/24 , 16:26 ,,,,,,,,,,,, 3844, prefork.py   2019/10/24 , 16:26 ,,,,,,,,,,, 21658, servers.py   2021/05/15 , 17:45 ,,, & lt; DIR>,,,,,,,,,,测试   2019/10/24 , 16:26 ,,,,,,,,,,,,,, 774, _compat.py   2019/10/24 , 16:28 ,,,,,,,,,,,, 2845, __init__ . py   2018/04/26 , 18:41 ,,,,,,,,,,,, 4879, __main__.py   2021/05/15 , 17:46 ,,, & lt; DIR>,,,,,,,,, __pycache__   ,,,,,,,,,,,,,,12个文件,,,,,,,,450704,字节   ,,,,,,,,,,,,,,,4个目录,44605644800,可用字节   #,备份,filesystems.py 和handlers.py      #,修改filesystems.py文件   #,将原本的“utf-8"修改成“gbk" (windows支持的gbk类型的字节)   503,,,,,,,,,,油品收率line.encode (& # 39; gbk # 39;,, self.cmd_channel.unicode_errors      #,修改,handlers.py 文件   #,将原本的“utf-8"修改成“gbk" (windows支持的gbk类型的字节)   1413,,,,,,,,,return  bytes.decode (& # 39; gbk # 39;,, self.unicode_errors)

4。编写并运行FTP代码

#,该脚本程序是运行在windows上的FTP,运行前需要安装pyftpdlib模块,pip3  install  pyftpdlib   #,修改filesystems.py文件,将503,行的,“utf-8"修改成“gbk" (windows支持的gbk类型的字节)即,油品收率line.encode (& # 39; gbk # 39;,, self.cmd_channel.unicode_errors   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

python如何搭建FTP服务器