一、tftp协议
Trivial File Transfer Protocol,简单文件传输协议,是一个用来在客户机与服务器之间进行简单文件传输的协议,端口号为69。
这里就不再赘述,网上有很多相关介绍,如下:
二、网上找到的tftp协议开源工具库
- tftpd
- 优势:目前使用最常用、功能最全
- 劣势:功能复杂,开源但未对外提供tftp协议接口
- 下载链接:phjounin / tftpd64 --- Bitbucket
- tftpserver
- 优势:纯c语言实现,代码量小
- 劣势:
- 无法在windows直接编译,需要交叉编译
- 网络延时大时有异常
- 下载链接:crossbowerbt/tftpserver: A simple tftp server, in C
- libtftp
- 优势:Qt实现,已实现client\server
- 劣势:使用Qt3实现,作者申明已过时,并可能无法编译通过
- 下载链接:Flameeyes/libtftp: TFTP client and server library for Qt3
- Qtftp
- 优势:Qt5实现,在libtftp的基础上移植重写
- 劣势:只实现了server端
- 下载链接:wdobbe/Qtftp: A library implementing TFTP server library using only the Qt library.
- 总结
- 由于目前只需要TFTP服务端,且在windows下使用qt开发,故选用Qtftp
三、Qtftp编译
- 打开doc/how_to_build.txt,参考如何编译
- 下载安装cmake
- 进入源码目录,创建build
- 执行cmake指令
bash
cmake -G"Visual Studio 16 2019 Win64" .. -DQT_PREFIX:Path=C:\Qt\Qt5.15\5.15.2\msvc2019_64
msbuild qtftp.sln /p:Configuration=Release
- 生成sln工程文件,使用vs打开编译
- 有几处无法编译通过,根据错误提示修改即可
- 该工程无法直接导出lib,可将Qtftp库工程修改成exe工程将main.cpp导入一起编译调试
总结:这样编译很麻烦,可新建个工程,将lib下的include/src文件拷贝到新工程编译更方便。