模拟百度网盘

news/2024/12/27 4:07:52/

linux下基于多线程和tcp去实现了一个模拟网盘,实现cs之间的下载互传大文件,实现断点续传,秒传,利用md5进行校验,实时显示百分比

整体框架:

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

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

校验:利用md5值去比对

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

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


http://www.ppmy.cn/news/1886.html

相关文章

浅析 em 和 rem

em 和 rem 都是相对长度单位 em 是相对于父级元素的font-size 大写来定义自身的大小 rem 是相对于根节点&#xff08;html{}, body{}, :root{}&#xff09;font-size来定义大小 Talk is cheap, show me the code !(空谈无用&#xff0c;上代码) em <html><head>…

【深度学习】常用算法生成对抗网络、自编码网络、多层感知机、反向传播等讲解(图文解释 超详细)

觉得有帮助请点赞关注收藏~~~ 一、生成对抗网络GAN Generative Adversarial Network 两个组件组成&#xff1a;一个生成器&#xff0c;用于生成虚拟数据&#xff0c;另一个是鉴别器&#xff0c;用于(GAN)生成式深度学习算法&#xff0c;可创建类似于训练数据的新数据实例。 G…

SpringBoot的创建的使用

哈喽呀&#xff0c;你好呀&#xff0c;欢迎呀&#xff0c;快来看一下这篇宝藏博客吧~~~ 目录 1、Spring Boot快速扫盲 2、Spring Boot 项目创建 3、运行项目 4 、输出hello world 5、注意事项--包路径错误 6、小结 1、Spring Boot快速扫盲 在创建SpringBoot项目前,我们得…

postgresql 数据库导出和导入

简介 本篇文章主要介绍PostgreSQL库和表的导出和导入以及常用的数据库管理工具的使用 一、数据库的导出和导入 1. 使用pgAdmin导出和导入数据库 导出 导入 新建数据库&#xff0c;右键Restore 2. 使用Navicate导出和导入数据库 导出 选择要导出的数据库&#xff0c;点…

数据库 - [ 视图 事务 ]

目录 视图 事务&#xff08;Transaction&#xff09; Oracle对象教程&#xff1a;视图(View)创建使用&#xff0c;视图(View)实际上是一张或者多张表上的预定义查询&#xff0c;这些表称为基表。从视图中查询信息与从表中查询信息的方法完全相同。只需要简单的SELECT…FROM即…

c++的构造函数赋值函数重载运算符等

文章目录一、前言二、正文1、拷贝构造函数2、赋值函数3、operator()() 重载()运算符4、类中方法前面的template5、类实例化的方式(1)调用构造函数实例化和指针实例化(2)类对象和类指针的区别(3) 类指针和智能指针的区别(4) 类指针和智能指针的转换三、后记一、前言 c的类的特殊…

前端入门学习笔记四十六

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><p>JavaScript 赋值运算符</p><p id "a"></p><script>var h 10;h / 3;document.getEl…

【小f的刷题笔记】(JS)数组 - 差分数组 LeetCode1109 LeetCode1094

【数组】 差分数组&#xff1a; &#x1f31f; 频繁对原始数组的某个区间的元素进⾏增减 ✔ 把每个数与前一个数的差值计算出来存在一个新数组里&#xff0c;区间的加减通过把新数组中区间开始下标的值加/减&#xff0c;区间结束下标对应的值减/加&#xff08;反一下&#x…