# 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) 2021 sunnysab, H-RY 采用 [GPLv3](LICENSE) 授权。
没有合适的资源?快使用搜索试试~ 我知道了~
一个使用 C++ 编写的网络文件传输工具(课程设计).zip
共34个文件
cpp:17个
h:11个
txt:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 115 浏览量
2024-02-24
09:25:56
上传
评论
收藏 34KB ZIP 举报
温馨提示
一个使用 C++ 编写的网络文件传输工具(课程设计)
资源推荐
资源详情
资源评论
收起资源包目录
一个使用 C++ 编写的网络文件传输工具(课程设计).zip (34个子文件)
001
CMakeLists.txt 2KB
lib
googletest
progress_bar
src
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
共 34 条
- 1
资源评论
LeapMay
- 粉丝: 2w+
- 资源: 2302
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功