实现一个FTP服务端(Qt)
源代码
https://gitee.com/yjwx0017/ftpserver
参考
FTP 协议简介
命令连接负责传送命令,数据连接负责传送数据。
服务端启动后在21端口监听,接受客户端连接。
命令格式,例如:
1 | client --> server: USER username\r\n |
命令交互方式为:客户端发送一个命令,服务端返回响应(返回代码 + 描述)。
部分命令:
USER命令 指定用户名
PASS命令 指定密码
PORT命令 主动模式,服务端将连接到客户端提供的IP地址和端口(数据连接)
PASV命令 被动模式,服务端启动监听,接受客户端的连接(数据连接)
TYPE命令 指定二进制模式还是ASCII模式
CWD 命令 更改当前目录
CDUP命令 切换到上级目录
QUIT命令 断开连接
DELE命令 删除文件
RMD 命令 删除目录
MKD 命令 创建目录
PWD 命令 输出当前目录
RNFR命令 指定重命名的源(Rename From)
RNTO命令 指定重命名的目标(Rename To)
LIST命令 列出当前目录下的所有内容
NLST命令 列出当前目录下的所有内容(只包含名称)
RETR命令 下载文件(Retrieve)
STOR命令 上传文件(Store)
STOU命令 上传文件(不覆盖重名文件, Store Unique)
APPE命令 上传文件(以附加的方式, Append)
REST命令 指定断点续传的位置(Restart)
FEAT命令 查询支持的扩展特性(比如 UTF8 )
OPTS命令 启用禁用某特性(比如 OPTS UTF8 ON)