1.简述
有时在windows环境下通过远程访问操作另一台linux主机。如使用putty和xshell来实现远程终端,使用Xftp来相互传输文件。现在想自己使用Qt开发一个文件传输软件。
FTP是基于TCP/IP的一种应用层文件传输协议,通过建立FTP服务器(默认端口21)-客服端的形式在各个主机间传输文件。
SFTP是基于FTP服务和ssh协议实现的一种加密文件传输协议,数据传输更加安全,但是相比喻FTP会损失一点效率。
开发者一般通过ssh工具来访问目标linux主机,linux系统一般集成ssh服务(默认端口为22)。用来传输文件的SFTP协议是一ssh的子协议,一般有ssh服务的主机都会自动开启sftp服务。但是linux主机并不一定会安装FTP服务器,需要自行安装。
Qt5.0之后移除了QFtp类(基于FTP协议实现的一个类),使用 QNetworkAccessManager 可以实现 Ftp 的上传/下载功能,后者在性能上和稳定性上有所提升。但有些原本 QFtp 有的功能 QNetworkAccessManager 却没有提供,例如:list、cd、remove、mkdir、rmdir、rename 等,前者的功能更加完善,提供的API更多,更加便于开发者使用。最为新手,开发一般的应用,当然选择QFtp更加有利,值得庆幸的是 QFtp 一直在维护,只需要下载源码自行编译即可使用
2.QFtp编译与部署
2.1 下载
下载QFtp源码,https://github.com/qt/qtftp
git clone https://github.com/qt/qtftp.git
2.2 修改
打开qt工程,修改 .pro 文件:”qtftp-master\src\qftp\qftp.pro“中框选的部分,修改为下图所示。
修改qftp.h文件的qurlinfo.h头文件,改为下图,该头文件路径有问题。
2.3 编译
只构建src,构建需要perl环境,如果之前装qt时一起装了就可以正常编译,如果没装会报错,去官网下载安装就行。