一个UDP实现文件传输的设计--待续...
来源:互联网 发布:手机验证码平台源码 编辑:程序博客网 时间:2024/05/19 02:24
转自 http://www.javaeye.com/topic/135874
首先文件发送必须有发送端(下面都叫它为Sender)和接收端(下面都叫它为Accepter),两都都各自启动一个DatagramSocket端口监听.它们之间的传输是基于DatagramPacket的,所以为了能够解释这个包,我们必须自定义一些包,以便于能够识别包.
下面这些包是我自己定义的:
主要有如下这些包:
FileInfoDataPakcet(文件信息包),FileDataPacket(文件数据包),ResponseFileInfoDataPakcet(响应文件信息包),
RequestFileDataPacket(请求文件包),TransStatusDataPacket(请求传输状态包),以及ResponseTransStatusDataPacket(响应请求传输状态包),下面分别来解释它们
FileInfoDataPacket: 一个是当Sender发送文件给Accepter时,它要先发送一个关于文件信息的包,如文件大小,文件名,文件分成几块.
ResponseFileInfoDataPakcet(响应文件信息包):Accepter收到文件之后,就要做出响应,是拒绝或者接受,但无论是拒绝或者接受,都要发一条响应包给Sender,这个消息包就是(ResponseFileInfoDataPacket).Sender收到之后,如果是拒绝文件包,就删除任务,如果对方接受文件,就要开始等待对方过来的请求包RequestFileDataPacket(请求文件包),
RequestFileDataPacket(请求文件包):请求文件包是Accepter发出的,它表求要请要Sender发文件的第一个包,然后收到之后,就用RandomAccessFile写入文件.写这个文件的过程可能会发生两种情况,一种是用户中断了,另外是一种传输完成正的中止,这时还要发消息告诉Sender说,我已经中断了此任务,或者文件已经传输完成,这个消息包就是TransStatusDataPacket(请求传输状态包)
TransStatusDataPacket(请求传输状态包):它就是Accepter中断文件传输或者文件传输完成时发给Sender给示对方能够移除正在进行的任务.
ResponseTransStatusDataPacket(响应请求传输状态包):当Sender收到请求传输状态包后,还要发一个响应包给Accepter通知Accepeter把请求传输状态包删除.当然这些事情都是基于线程而做的.
小结:
1.UDP传输文件会比较麻烦,它不像TCP那么稳定,在网络不稳定的情况下,用UDP传输文件才比较符合实际(当然也不排除特殊情况).UDP传输需要考虑丢包情况,以及如何处理在丢包时重发数据包.
2.数据发送时,有的数据需要对方回复,在网络不稳定的情况下,我们就需要不断的给对方发数据包,直到有数据回复,这就要让线程去做,如果收到对方回复之后我们才停止发包.
- 一个UDP实现文件传输的设计--待续...
- 一个UDP实现文件传输的设计--待续...
- UDP文件传输的实现
- UDP文件传输的实现
- 利用TCP/UDP完成文件传输的设计和实现
- 转载:UDP文件传输的实现
- 实现UDP的可靠文件传输 练习
- java udp实现文件传输
- 用UDP实现可靠文件传输,如何利用UDX创建一个简单的WIN32程序
- 用UDP实现可靠文件传输,如何利用UDX创建一个简单的WIN32程序
- 基于UDP的文件传输
- 使用不可靠的UDP设计可靠的文件传输协议
- 用UDP实现可靠文件传输
- 用UDP实现可靠文件传输
- 用UDP实现可靠文件传输
- 用UDP实现可靠文件传输
- java使用udp实现文件传输
- C#实现的一个文件传输实例
- JDK1.6环境设置(个人理解)
- 【struts2系列教程之一】为Struts 2.0做好准备
- mysql 5.0存储过程学习总结
- Oracle 中truncate与delete的区别
- ORACLE 常用的SQL语法和数据对象
- 一个UDP实现文件传输的设计--待续...
- 使用Java NIO编写高性能的服务器
- 对java中一些关键的,容易迷惑的知识点的归纳总结
- flex开发心得
- ADO.NET在开发中的部分使用方法与技巧
- 向Struts2的action直接赋中文参数
- 远程修改svn密码
- JAAS介绍【转】
- java改变图片大小