三、Socket之UDP异步传输文件-多文件传输和文件MD5校验
本文接着上一篇文章二、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下载
三、Socket之UDP异步传输文件-多文件传输和文件MD5校验的更多相关文章
- 四、Socket之UDP异步传输文件-用控件显示文件传输进度
上一篇文章三.Socket之UDP异步传输文件中,实现了多文件的传输和MD5校验,还显示了文件传输过程中的信息,在这一篇文章中,将介绍怎样实现传输文件的进度显示和实现选择保存文件路径. 首先,来实现一 ...
- 六、Socket之UDP异步传输文件-实现稳定的文件传输
上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...
- 二、Socket之UDP异步传输文件
上一篇文章一.Socket之UDP异步传输文件中,实现了文件的基本传输,但是传输过程中的信息是看不到的,这一篇是对上一篇进行了一些改进,并且可以了解传输的信息(加入了Log),还加入了接收或者拒绝接收 ...
- 五、Socket之UDP异步传输文件-实现传输中取消传送
上一篇文章四.Socket之UDP异步传输文件中,只实现了传输开始前拒绝接收文件,没有实现文件传输进行的时候取消传送,这篇文章中我们就来介绍怎样实现这个功能. 在传输过程中取消文件的传送,有很多地方要 ...
- 一、 Socket之UDP异步传输文件
用SCOKET 发送文件是一个不太好处理的问题,网上的例子也都是很简单的,我准备写一个比较完善的例子,这个就算是开始吧,以后的都会在这个例子的基础上进行修改,准备实现多线程传输.断点传输和文件传输的完 ...
- python tcp黏包和struct模块解决方法,大文件传输方法及MD5校验
一.TCP协议 粘包现象 和解决方案 黏包现象让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd)执行远程命令的模块 需要用到模块subprocess sub ...
- Socket之UDP发送文件
内容导航 一. Socket之UDP异步传输文件 二.Socket之UDP异步传输文件 三.Socket之UDP异步传输文件-多文件传输和文件MD5校验 四.Socket之UDP异步传输文件-用 ...
- Socket 学习(三).4 UDP 穿透 客户端与客户端连接
效果图: 使用方法: 先 修改WinClient\bin\Debug 下面的 ip.ini,写上 服务器 IP地址. 客户端 与 客户端 通讯 之前 ,点击发送打洞消息 按钮,然后过一会再发送消息 ...
- 第三天 函数 三元运算 lambda表达式 内置函数 文件操作
面向过程: 直接一行一行写代码,遇到重复的内容复制黏贴. 不利于代码阅读 代码没有复用 面向对象 将代码块定义为函数,以后直接调用函数 增强了复用性 函数的定义方法 def 函数名(传递参数): 函数 ...
随机推荐
- Java [Leetcode 273]Delete Node in a Linked List
题目描述: Write a function to delete a node (except the tail) in a singly linked list, given only access ...
- 解析activity之间数据传递方法的详解
转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下 1 基于消息的通信机制 ...
- Channel 详解
java.nio.channels.FileChannel封装了一个文件通道和一个FileChannel对象,这个FileChannel对象提供了读写文件的连接. 1.接口 2.通道操作 a.所有通道 ...
- uvalive 4973 Ardenia
题意:给出空间两条线段,求距离. 注意输出格式! #include<cstdio> #include<cmath> #include<algorithm> usin ...
- 机器学习总结之逻辑回归Logistic Regression
机器学习总结之逻辑回归Logistic Regression 逻辑回归logistic regression,虽然名字是回归,但是实际上它是处理分类问题的算法.简单的说回归问题和分类问题如下: 回归问 ...
- Pritunl:简易搭建个人VPN及年费200的超编译独立主机 BandwagonHost
https://pao-pao.net/article/213 Pritunl:简易搭建个人VPN 文/ Vergil 一 直以来安装 VPN 服务.提供全局加密代理,是租用VPS(虚拟主机)的一个重 ...
- LinearLayout使用tips
1.LinearLayout有divider属性,可以用来分割layout里面的各个组件 eg: a | b | c 如果c为gone的话,那么第二条线会消失,如果没用divider而使用View画线 ...
- Android权威编程指南读书笔记(1-2章)
第一章 Android应用初体验 1.4用户界面设计 <?xml version="1.0" encoding="utf-8"?> ADT21开发版 ...
- Android问题-DelphiXE5编义时提示找不到“连接器(arm-linux-androideabi-ld.exe)"
问题现象:DelphiXE5编义时提示找不到“连接器(arm-linux-androideabi-ld.exe)" 问题提示:Checking project dependencies... ...
- 转载 .net中的dll.refresh文件和pdb文件
转载原地址: http://blog.csdn.net/lihuang319/article/details/6433727 dll.refresh文件 打开refresh文件,可以看到里面仅仅是个路 ...