【Linux】基于TCP实现的大型文件(超过2G)传输项目——总结

【1】实现的功能

文件的上传、下载(包括超过2G的大文件)、断点续传、秒传、删除等等。

【2】项目框架

整个项目是在Linux环境下用C语言开发的,基于TCP协议,采用多线程的socket通信方式。

普通上传和秒传:客户端会先计算文件的MD5值发送给服务器,服务器会从自己的md5文件中查找有没有该文件的md5值存在,如果存在,则会发送提示给客户端表明服务器端已经存在该文件,进行秒传;如果不存在则进行普通上传。

下载和断点续传:客户端和服务器都会首先尝试打开该文件,如果服务器端打不开该文件,说明不存在该文件,无法下载,如果服务器能打开该文件,而客户端打不开该文件,说明为普通下载,如果客户端能打开该文件,服务器端会发送文件大小给客户端,客户端会计算本地的文件大小和服务器端的文件大小,如果大小相同,则说明本地已经存在该文件,如果不相同,客户端会将文件大小发送给服务器,服务器将文件指针偏移到客户端文件大小出开始发送,这就是断点续传。

超过2G的大文件处理:打开文件时使用O_LARGEFILE,文件的大小用long long类型,文件大小的输出使用%lld等。

系统命令:如ls等通过fork+exec系列函数使用管道重定向进行实现。

【3】源代码

源代码已经上传至GitHub,如果有兴趣可以查看!
GitHub源代码链接——基于TCP实现的大型文件(超过2G)传输系统

【4】运行截图

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值