# FtpClient **Repository Path**: zlp200104/ftp-client ## Basic Information - **Project Name**: FtpClient - **Description**: ftp客户端: C++、qt、socket、ftp协议,多线程编程 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-08-25 - **Last Updated**: 2023-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FtpClient #### 介绍 ftp客户端: C++、qt、socket、ftp协议,多线程编程 注意事项: 1、在qt多线程中使用sock,需要在子线程中创建sock,在run方法中定义并进行绑定连接等,不能在构造函数中实现,connect监听readyread等信号也不能在构造函数中(可以理解成在构造函数中的一切都属于主线程,子线程和主线程不能共用一个IODevice) 2、子线程中需要用到主线程中的参数,使用信号槽传递 3、创建一个map容器,目录名为key,QListf为value,只要每个目录内的文件发生改变就修改map在触发Listischange信号,实时更新tablewidget 4、ftp服务器模式: 被动模式:服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端。 主动模式:客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。 当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。主动模式是从服务器端向客户端发起连接;被动模式是客户端向服务器端发起连接 本程序使用被动模式PASV:首先需要创建一个控制连接的consock,与服务器进行连接、登录,然后发送PASV指令,服务器会返回一个大于10000的任意端口号,再创建一个数据传输datasock与该端口号连接。后续向服务器发送指令均通过consock发送,服务器返回状态码也是通过consock返回,但是服务器的其他信息,如发送List后服务器会将服务器的目录信息返回,都是通过datasock返回。