本文接着上一篇文章二、Socket之UDP异步传输文件,在上一篇文章的基础上实现多文件的传输和文件传输完成后进行完整性校验。

要实现多文件的传输,必须要对文(2)中发送文件的数据格式进行改进,必须加入每个发送数据属于哪个文件的标识,这样在文件接收的时候我们才能正确的处理这些数据。在具体的实现中,我是用文件的MD5值作为不同文件的数据标识的,这样当我们收到数据时,先根据MD5值判断数据属于哪一个文件,然后进行相应的处理。

要实现多文件的传输,在文件发送类(UdpSendFile)和文件接收类(UdpRecieveFile)中,就不能只定义一个SendFileManager和ReceiveFileManager来管理发送和接收文件了,我们要对每一个文件都建立一个对应的SendFileManager和ReceiveFileManager来管理。在件发送类(UdpSendFile)和文件接收类(UdpRecieveFile)中,都用一个Dictionary<TKey, TValue>来存储文件对应的管理对象,TKey为文件的MD5,TValue就是发送文件和接收文件类对象了。当收到数据的时候,我们就根据数据中的MD5值找到对应的文件管理对象,进行相应的操作。当文件发送或者传输完毕后,我们就从Dictionary<TKey, TValue>中移除相应的对象并且清理它们所占的资源。

当文件接收完成后,我在ReceiveFileManager中新定义了一个事件ReceiveFileComplete,这个事件将对文件进行MD5校验,并且将结果通知我们,我们就可以知道文件是否完整的传输了过来。

现在我们来看看多文件传输和MD5校验的截图和:

转载CS 程序员之窗 demo下载

转载于:https://www.cnblogs.com/xchit/p/3783287.html

三、Socket之UDP异步传输文件-多文件传输和文件MD5校验相关推荐

  1. python tcp黏包和struct模块解决方法,大文件传输方法及MD5校验

    https://www.cnblogs.com/zaizai1573/p/10230973.html 一.TCP协议 粘包现象 和解决方案 黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令 ...

  2. Java Socket实现简易多人聊天室传输聊天内容或文件

    Java Socket实现简易多人聊天室传输聊天内容或文件 Java小练手项目:用Java Socket实现多人聊天室,聊天室功能包括传输聊天内容或者文件.相比于其它的聊天室,增加了传输文件的功能供参 ...

  3. 几种快速传输大文件的方式

    随着科学技术的发展,图片或视频等文件的质量越来越高,同时也意味着,文件也变得越来越大,那么快速传输大文件需求越来越明显. 在日常生活中,经常遇到需要与他人共享文件或传输到另一台电脑上的情况.传统的大文 ...

  4. 如何快速在两台电脑之间传输大文件

    两台电脑如何传文件最快方法.我们在使用电脑的时候,有的情况下需要我们队两台电脑之间互相的传输大文件.那么我们应该通过什么样的方法传输最快速呢?我们一起来看看吧. 首先我们需要一根平时上网连接网络时用的 ...

  5. 文件完整性校验之MD5校验

    文件完整性校验之MD5校验 在现代计算机系统中,文件安全和完整性保护是至关重要的.不仅是个人用户需要保护他们的数据免受恶意软件和黑客攻击,企业和机构也需要确保其敏感数据的完整性和机密性. MD5校验是 ...

  6. HTTP Content-Type (MIME) el-upload文件、图片上传 | 文件改名 | 大文件 | 文件下载

    MIME 为数据格式标签:最初 MIME 是用于电子邮件系统的,后来 HTTP 也采用了这一方案. 在HTTP协议消息头中,使用Content-Type来表示请求和响应中的媒体类型信息. Conten ...

  7. Android使用Socket(Tcp/Udp)协议进行数据传输(传输大文件)

    先揭晓一下前面天的抽奖活动中奖人员: 恭喜这位同学中奖,麻烦你在微信公众号留言你的收货地址,或者加入QQ群:417046685 来找我也行. 同时,知识星球的活动还在继续,现在加入知识星球立即赠送技术 ...

  8. 使用C++实现Socket编程传输协议文件(包括大文件)

    使用: (1)首先运行服务端,待服务端运行起来: (2)最后运行客户端,输入要传输文件到哪个目标机器的IP地址: (3)输入传输文件的路径及文件(完成的路径),其中包含文件的类型,也就是后缀需要包含( ...

  9. Socket编程一实现简易的聊天功能以及文件传输

    干程序是一件枯燥重复的事,每当感到内心浮躁的时候,我就会找小说来看.我从小就喜爱看武侠小说,一直有着武侠梦.从金庸,古龙,梁羽生系列到凤歌(昆仑),孙晓(英雄志)以及萧鼎的(诛仙)让我领略着不一样的江 ...

  10. 基于UDP的多播(组播)文件传输

    此次的课程设计通过借鉴网上的信息(前人种树后人乘凉,感谢在网上分享的大佬们)然后自己再次修改调试完成. 步入正题吧 主要代码: public class MULTICAST {private Stri ...

最新文章

  1. java集合-HashSet源码解析
  2. golang二维数组初始化
  3. 论文笔记:Missing Value Imputation for Multi-view UrbanStatistical Data via Spatial Correlation Learning
  4. 设计移动App的十大技巧
  5. MYSQL的随机查询的实现方法
  6. 济宁医学院计算机科学与技术专业怎么样,济宁医学院专业排名及介绍 哪些专业最好...
  7. python字典api_python接口自动化(九)--python中字典和json的区别(详解)
  8. 【转载】基于Redis实现分布式锁
  9. arduino两轮平衡车(二)-- 原理讲解
  10. 手把手教你搭建SpringCloud项目(三)集成Eureka服务注册中心
  11. c++string 加引号_C++|引用计数与shared_ptr智能指针(以实现String类为例)
  12. 基于JAVA springboot + MYSQL +VUE的项目管理系统(含数据库),包括工时统计、原型预览、效果图管理等
  13. 开放银行赋能供应链金融,连接企业生态场景
  14. HTTP协议和URLConnection使用
  15. KafkaConsumer is not safe for multi-threaded access
  16. BT面板创建站点显示已存在问题解决
  17. Fast Abstractive Summarization with Reinforce-Selected Sentence Rewriting
  18. 怎样计算机翼升力大小,如何计算升力和阻力?
  19. 南科大于仕琪团队招聘研究助理教授,博士后
  20. 基于百度飞桨的皮影戏生成器

热门文章

  1. 生成式建模“回归”信息抽取
  2. 没有顶会的 CV/NLP 方向的博士生毕业出路在哪里?
  3. 一大批历史精彩文章啦
  4. Python学习——collections系列
  5. pytorch 基于sqs2sqs的中文聊天机器人
  6. python生成词云教程(附带QQ聊天记录生成词云实战)
  7. jquery扩展与插件
  8. Prezi 7 大图形设计技巧,让视觉思维落地生根
  9. 不可能解开的谜题 (程序员修炼之道,评注者序)
  10. 21天学通JAVA:类的定义和对象的创建