# Ant
Ant 是一个简单的网络文件传输工具。
项目起始于 2020-2021 (2) 软件工程综合实训的课程设计。
## 项目背景
2020 年暑假的时候,有次我想把约 800GB 的硬盘备份文件通过网络传输给同学。
因为是放假在家,同时又是跨省跨运营商,我们想了很多办法进行传输。
后来,采用了 HTTP 协议。我在本地架设一个 IIS,开放公网端口让客户端下载,带宽约能跑满,但在约两天的传输后,接收方对文件校验失败。
我们开始对底层协议的可靠性产生疑问,并萌生出自己开发一个支持大文件的网络文件传输工具的想法。
目前,主流的文件传输协议 HTTP, FTP, SMB 等,它们受支持广、功能强大,但在这份需求上,好像也不能完全满足。
——我们想自己实现一个文件传输工具,我们希望它能支持断点续传、加密传输、校验等特性,如果不能做到创新与创造,那就当造个轮子吧!
## 选型
本着复习计算机网络的想法,底层协议选用 UDP,自己动手实现部分 TCP 提供的功能。
(当然,这个目标过于宏大,很可能直到项目结束时也无法实现。)
同时,基于历史经验,C++ 网络文件传输中,网络是耗时较长的因素,并考虑到在 C++ 中实现异步的文件读写和网络通信并非朝夕可完成的,根据项目进度,我们采用了同步的方式读写文件和进行网络通信。
项目底层基于 Windows Socket API。
如果后期有时间,会尝试在 C++ 中使用异步方法(这里夸一下 Rust 中的 tokio 库)。
## 基本流程
我们将接收方称为 Server,将发送方称为 Client。
## 最小需求
实现一个命令行下的网络文件传输工具,支持进度查看。传输工具使用传输层的 UDP 协议通信,确保文件快速、有序地传送到接收方。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
一个基于 C++ 编写的网络文件传输工具(课程设计) ## 基本流程 我们将接收方称为 Server,将发送方称为 Client。 ## 最小需求 实现一个命令行下的网络文件传输工具,支持进度查看。传输工具使用传输层的 UDP 协议通信,确保文件快速、有序地传送到接收方。
资源推荐
资源详情
资源评论
收起资源包目录
ant-code.zip (37个子文件)
ant-code
.DS_Store 6KB
CMakeLists.txt 2KB
lib
.DS_Store 6KB
googletest
progress_bar
src
.DS_Store 6KB
protocol
Frame.cpp 6KB
VecStream.h 1KB
Frame.h 1KB
VecStream.cpp 2KB
DataPayload.cpp 1KB
Payload.h 622B
RequestPayload.h 930B
RecvResponse.cpp 1KB
RecvResponse.h 670B
RequestPayload.cpp 2KB
DataPayload.h 687B
ReadBuffer.h 912B
AntClient.cpp 3KB
UdpSocket.cpp 3KB
ReadBuffer.cpp 1KB
WriteBuffer.cpp 1KB
AntServer.cpp 2KB
AntClient.h 885B
UdpSocket.h 2KB
WriteBuffer.h 636B
main
server.cpp 1KB
client.cpp 1KB
AntServer.h 818B
LICENSE 34KB
.gitmodules 204B
test
PayloadTest.cpp 3KB
UdpSocketTest.cpp 1KB
FrameTest.cpp 2KB
test-case
pure-text.txt 12B
VecStreamTest.cpp 2KB
BufferTest.cpp 1KB
.gitignore 186B
README.md 2KB
共 37 条
- 1
资源评论
- 墨墨墨墨墨墨2024-12-11资源很赞,希望多一些这类资源。
- 小小君2024-05-22资源内容详细,总结地很全面,与描述的内容一致,对我启发很大,学习了。
MarcoPage
- 粉丝: 4372
- 资源: 8837
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功