hustlixiang21 / HUST_CSE_TFTP_Client

华中科技大学网络空间安全学院计算机网络实验——TFTP客户端

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

项目概述

开发环境

本项目开发环境是Window10虚拟机(因为我是Mac),基于Qt6工具开发, IDE使用的Clion,在Clion中配置Qt开发的工作流。

如何运行程序?

可执行程序有两个版本,一个是开发时的debug版本,在目录cmake-build-debug中,另一个是打包发布后的版本 ,在Release目录中,均可点击直接运行,差别在于debug版本会调出cmd打印一些调试信息。release不会。

如若想打开本仓库的项目,因为本人使用Clion配置Qt环境,而非直接使用Qt Creator开发,所以需要在Clion中配置Qt的开发环境,具体的配置方法可以参考这篇文章。 然后打开项目,点击运行即可。

项目需要实现?

本项目是华中科技大学网络空间安全学院计算机网络实验课程的套接字编程部分, 目的是利用TFTP协议实现文件上传下载的客户端。

为什么选择Qt?

想要自己实现一个GUI界面,Qt是一个不错的选择,而且Qt的跨平台性也是一个优点。 想通过GUI的开发提高自己的代码能力。

实现的功能和TODO

准备工作

  • IP地址的检查
  • 一些参数非空的检查
  • 调用会话框选取文件路径,并对文件的存在性检查
  • UI界面布局的设计,资源文件的添加

TFTP协议的实现

  • 套接字的建立以及检查(版本和是否成功创建)
  • 几种类型数据包的封装

upload功能的实现

  • 实现文件的上传功能
  • 实现了上传过程中的进度条的显示
  • 实现了上传过程中的错误信息的显示
  • 实现了上传过程中的吞吐量和速度的显示

download功能的实现

  • 实现了文件的上传功能
  • 实现了下载过程中的进度条的显示
  • 实现了下载过程中的错误信息的显示
  • 实现了下载过程中的吞吐量和速度的显示
  • 提供本地若有冲突文件的覆盖是否的选项

目前未实现的功能:

  • 上传和下载过程中实时速度的显示(Timer有bug)
  • 代码复用率的提升
  • ASCII码的功能貌似有点问题
  • clumsy错误传输的测试

项目的截图

About

华中科技大学网络空间安全学院计算机网络实验——TFTP客户端


Languages

Language:C++ 65.7%Language:Makefile 22.3%Language:C 9.1%Language:CMake 2.9%