五、Socket之UDP异步传输文件-实现传输中取消传送
上一篇文章四、Socket之UDP异步传输文件中,只实现了传输开始前拒绝接收文件,没有实现文件传输进行的时候取消传送,这篇文章中我们就来介绍怎样实现这个功能。
在传输过程中取消文件的传送,有很多地方要考虑,最重要的就是要对数据的访问进行同步。当发送文件方取消发送时,我们要从文件发送列表中移除对应的发送文件管理类和移除传输控件,并且清理资源。在移除的时候,因为是异步收发信息的,也许其他地方还在申请使用这些资源,所以我们在移除的时候,不能让其他地方再访问他们,这里就要加上锁。清理发送文件管理类也一样,因为是异步读写文件的,我们清理的时候,需要等待正在读写的操作完成后才能进行清理,所以在发送文件管理类中加入了一个新的安全的Stream对象SafeStream,文件的读写都由他来操作。当接收方取消接收的时候,情形跟发送发一样,也需要进行类似的处理,这里就不多说了。
在新的项目中,实现了传输没有完成时,文件的后缀名改为.tmp。还实现了当选择的存储文件的目录下有相同的文件时,接收的文件将会以文件名_1.rar这样的方式保存。
在这一系列的文章中,发送方都是等到接受方返回接收成功信息后才开始传输下一个数据的,这就会出现一个问题,当接收方没有接收到数据或者接收方接收到了数据但是发送的接收成功的数据包发送方没有收到(丢包了),发送方就一直不会发送下一个包数据,这样文件传输就中断了,这个问题我们就留到下一篇来解决吧。
文件传输过程的截图以前都发了,现在就看看取消发送的截图吧:

转载CS 程序员之窗 demo下载
五、Socket之UDP异步传输文件-实现传输中取消传送的更多相关文章
- 六、Socket之UDP异步传输文件-实现稳定的文件传输
上一篇文章五.Socket之UDP异步传输文件-实现传输中取消传送中,还遗留了一个传输文件最大的问题,就是传输过程中丢包,这样在文件传输过程中就会卡住了,这篇文章就来解决文件传输中的丢包问题,实现稳定 ...
- 三、Socket之UDP异步传输文件-多文件传输和文件MD5校验
本文接着上一篇文章二.Socket之UDP异步传输文件,在上一篇文章的基础上实现多文件的传输和文件传输完成后进行完整性校验. 要实现多文件的传输,必须要对文(2)中发送文件的数据格式进行改进,必须加入 ...
- 四、Socket之UDP异步传输文件-用控件显示文件传输进度
上一篇文章三.Socket之UDP异步传输文件中,实现了多文件的传输和MD5校验,还显示了文件传输过程中的信息,在这一篇文章中,将介绍怎样实现传输文件的进度显示和实现选择保存文件路径. 首先,来实现一 ...
- 二、Socket之UDP异步传输文件
上一篇文章一.Socket之UDP异步传输文件中,实现了文件的基本传输,但是传输过程中的信息是看不到的,这一篇是对上一篇进行了一些改进,并且可以了解传输的信息(加入了Log),还加入了接收或者拒绝接收 ...
- 一、 Socket之UDP异步传输文件
用SCOKET 发送文件是一个不太好处理的问题,网上的例子也都是很简单的,我准备写一个比较完善的例子,这个就算是开始吧,以后的都会在这个例子的基础上进行修改,准备实现多线程传输.断点传输和文件传输的完 ...
- Socket之UDP发送文件
内容导航 一. Socket之UDP异步传输文件 二.Socket之UDP异步传输文件 三.Socket之UDP异步传输文件-多文件传输和文件MD5校验 四.Socket之UDP异步传输文件-用 ...
- 网络编程 - socket通信/粘包/文件传输/udp - 总结
socket通信 1.简单的套接字通信 import socket phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) phone.bin ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- SOCKET, TCP/UDP, HTTP, FTP 浅析
SOCKET, TCP/UDP, HTTP, FTP (一)TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层: 网络层:IP协议. ...
随机推荐
- 精简版、GHOST版win7,arduino驱动安装失败的解决方法分享
arduino组件安装驱动不成功,总是提示系统找不到指定文件. 原因是因为精简版缺少了两个关键的系统文件,导致无法安装.mdmcpq.inf 和 usbser.sys 解决方案详见帖子http:// ...
- 【转】Java 截取字符串
原文网址:http://blog.csdn.net/yelangjueqi/article/details/9149699 截取字符串常用方法: 1.length() 字符串的长度 例:char ch ...
- 下载网址 wMware
http://blog.sina.com.cn/s/blog_4549d6770102vxue.html 安装mac 文档 http://jingyan.baidu.com/article/ff411 ...
- c#: 解析json, 转成xml, 简单方便
没看到.net framework中有这样的功能, 懒得到处找了, 索性花点时间自己写一个 /* * Created by SharpDevelop. * Date: 2013/6/24 * User ...
- 每天一个linux 命令:which
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. ...
- 类内const static(static const)成员变量初始化问题
在查找const相关资料的过程中,又遇到了另外一个问题,就是C++类中const static(或者static const)成员变量应当如何初始化的问题. 查阅了许多资料,发现VC环境下,只允许co ...
- [原]《打造未来的Java》视频笔记
[Date]2013-09-28 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Content]: 1.Java7新特性 1 ...
- sprintf的缓冲区溢出
sprintf的缓冲区溢出 分类: 技术2010-03-07 15:26 362人阅读 评论(0) 收藏 举报 今天,调试sector的时候遇到一个特奇怪的问题,程序会在取string的c_str() ...
- ubuntu源码安装R语言
下载后解压完,进入开始配置: ./configure --enable-R-shlib 报错: configure: error: con--with-readline=yes (default) a ...
- 字符串匹配算法——KMP算法学习
KMP算法是用来解决字符串的匹配问题的,即在字符串S中寻找字符串P.形式定义:假设存在长度为n的字符数组S[0...n-1],长度为m的字符数组P[0...m-1],是否存在i,使得SiSi+1... ...