网站动画效果用什么程序做的免费字体logo设计
1 概述
TFTP协议是基于UDP的简单文件传输协议,协议双方为Client和Server.Client和Server之间通过5种消息来传输文件,消息前两个字节Code是消息类型,消息内容随消息类型不同而不同。传输模式有三种:octet,netascii和mail,octet为二进制模式,netascii为文本模式,mail为文本模式,不过收到的文本不是保存到文件,而是打印出来,现在已不常用。DATA消息种数据长度是512字节,最后一个数据包可能会小于512。详见TFTP协议
本文描述如何利用C++基于Qt5.12实现TFTP的Server和Client。
2 概要设计
TFTP客户端通过GetFile来下载文件,通过PutFile上传文件。
2.1 序列图
- GetFile序列图
 
     ,----.          ,----------.                  ,----------.|User|          |TFTPClient|                  |TFTPServer|`-+--'          `----+-----'                  `----+-----'|      GetFile     |                             |      | ----------------->                             |      |                  |                             |      |                  | Request of get file over UDP|      |                  | ---------------------------->      |                  |                             |      |                  |   Reponse a file over UDP   |      |                  | <----------------------------      |                  |                             |      |      A File      |                             |      | <-----------------                             |      ,-+--.          ,----+-----.                  ,----+-----.|User|          |TFTPClient|                  |TFTPServer|`----'          `----------'                  `----------'
 
- PutFile序列图
 
     ,----.          ,----------.                  ,----------.|User|          |TFTPClient|                  |TFTPServer|`-+--'          `----+-----'                  `----+-----'|      PutFile     |                             |      | ----------------->                             |      |                  |                             |      |                  | Request of put file over UDP|      |                  | ---------------------------->      |                  |                             |      |                  |     Reponse ACK over UDP    |      |                  | <----------------------------      |                  |                             |      |        ACK       |                             |      | <-----------------                             |      ,-+--.          ,----+-----.                  ,----+-----.|User|          |TFTPClient|                  |TFTPServer|`----'          `----------'                  `----------'
 
2.2 类图
如图所示整个软件有8个类:
 
 类型说明:
- TFTP类实现TFTP协议。
 - TFtpServerFile类实现服务端文件收发。
 - TFtpClientFile类实现客户端文件收发。
 - BaseUdp类定义UDP写接口。
 - ServerSocket类实现服务端UDP写接口。
 - ClientSocket类实现客户端UDP写接口。
 - TFtpServer类启动服务,等待客户端上传/下载文件。
 - TFtpClient类连服务端来上传/下载文件。
 
2.3 模块划分
软件划分为如下模块:
- Core是一个静态库
 - Server是一个EXE程序,调用Core库实现TFTP服务端功能。
 - Client是一个EXE程序,调用Core库实现TFTP客户端功能。
 
2.3.1 Core
Core包括下面4个类:
- FTP
 - BaseUdp
 - TFtpClientFile
 - TFtpServerFile
 
2.3.2 Client
Client包括下面3个类:
- ClientSocke
 - TFtpClient
 - TFtpClientWidget
 
2.3.3 Server
Server包括下面3个类:
- ServerSocket
 - TFtpServer
 - TFtpServerWidget
 
Qt实现TFTP Server和 TFTP Client(二)
