当前位置: 首页 > news >正文

Qt实现TFTP Server和 TFTP Client(一)

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类实现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(二)

http://www.lryc.cn/news/325945.html

相关文章:

  • MySQL数据库的日志管理以及备份和恢复
  • Maven发布开源框架到远程仓库
  • Qt创建窗口选择的三个父类介绍 ----- QWidget、QMainWindow、QDialog
  • 论文翻译 - Defending Against Alignment-Breaking Attacks via Robustly Aligned LLM
  • Kafka总结问题
  • 【RPG Maker MV 仿新仙剑 战斗场景UI (八)】
  • 【PyQt】18 -菜单等顶层操作
  • 线性代数基础概念和在AI中的应用
  • elasticsearch _cat/indices docs.count is different than <index>/_count
  • 关系型数据库mysql(7)sql高级语句
  • 计算机网络——网络基础1
  • ERDUnet: An Efficient Residual Double-codingUnet for Medical Image Segmentation
  • vue响应式基础
  • 每天上万简历,录取不到1%!阿里腾讯的 offer 都给了哪些人?
  • 外包干了20天,技术退步明显.......
  • 4核8G云服务器,阿里云要多少钱?
  • 数学分析复习:振荡型级数的收敛判别
  • 阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中
  • 并发VS并行
  • C语言经典例题(8) --- 进制A+B、网购、及格分数、最高分数、计算一元二次方程
  • 两区域二次调频风火机组,麻雀启发式算法改进simulink与matlab联合
  • 自动驾驶国际标准ISO文件
  • 【数据结构】双向奔赴的爱恋 --- 双向链表
  • 【Redis】高频面试题
  • 数据分析基础
  • ffmpeg把一个平面视频,做成左右平面视频
  • Docker搭建LNMP环境实战(02):Win10下安装VMware
  • 苍穹外卖笔记
  • [医学分割大模型系列] (3) SAM-Med3D 分割大模型详解
  • 【React】React中将 Props 传递给组件