这两天忙里偷闲,写了一个全网实现UPD文件的传输.
首先文件发送必须有发送端(下面都叫它为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文件传输.rar UDP文件传输.rar UDP文件传输.rar UDP文件传输.rar UDP文件传输.rar UDP文件传输.rar
用UDP实现可靠文件传输 用UDP实现可靠文件传输 用UDP实现可靠文件传输
UDP实现可靠文件传输.doc UDP实现可靠文件传输.doc
UDP 文件传输 从网上下载的和广大网友共享 学习UDP 文件传输更有实用价值
c#udp文件传输,代码程序
摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输摄像头udp传输...
用VC实现的UDP文件传输程序。可实现局域网文件的点对点传递。 利用多线程技术,集收发的服务器、客户端于一体,县城建利用自定义Windows消息进行通信。
qt实现udp传输文件(图片、文档之类)里面还包含tcp传输数据(不是文件)
本资源是使用 java,分别用 TCP 和 UDP 传输文件的源代码。读者朋友可以下载下来,参考着满足自己的需求。 另有博客《Java 使用 TCP 和 UDP 传输文件》可以参考,地址是:...
使用Java语言编写程序,设计UDP服务器。考虑到实时性,采用UDP协议。 1.设计一个简单的界面,使得程序能够流畅的完成视频文件的传输。
基于Winsock的udp文件传输,包含客户端和服务器端程序
基于socket UDP协议实现文件传输(windows vc++源代码) UDP传1GB的文件仅需15秒 该代码包含 根据文件内容长度生成MD5码,以供校验文件完整性 本代码包含windows vc++编写dll的代码
C# UDP(Socket)异步传输文件-实现稳定的文件传输 ,并且有美丽的传输控件
delphi_UDP文件传输delphi_UDP文件传输 免资源的别人的10分高了点
史上最简单的文件UDP文件传输。 可以传输任意文件。
在网上搜到的C#实现的UDP文件传输代码,分享给大家。局域网下速度能达到5,6M,效率还可以
简单源码 网络技术应用的简单源码 网络技术应用的
UDP文件传输实例 C#语言开发 仅作参开!!!
易语言UDP文件传输.rar
Delphi UDP 文件传输实例程序 代码,主程序分为三个部分:一、服务端(接收...通过本程序你将了解到一些UDP方面的技巧,如何基于UDP传输文件,里面有一个文档,详细说明了UDP与TCP的区别,并讲了如何更优化的使用UDP。