基于UDP的文件传输

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

报告编号:11 综合课程设计报告

基于UDP协议的文件传输系统的设计与实现

学生姓名:

指导教师:

所在系:电子系

所学专业:电子信息工程

年级:08级电子(2)班

2011 年6 月

目录

摘要 (3)

1 实验的相关知识 (4)

1.1通信的模式 (4)

1.2 UDP协议 (4)

1.3 Winsock控件 (4)

1.3.1 Winsock控件重要属性、方法和事件 (5)

1.3.2 Winsock控件通信的工作原理 (7)

2 实验原理 (7)

3 实验步骤 (7)

3.1总体规划 (8)

3.2模块设计 (8)

3.3创建窗体 (8)

3.4程序设计 (10)

3.5系统运行 (11)

4实验结论 (12)

参考文献 (13)

基于UDP的文件传输的系统的设计与实现

摘要

该实验的任务是实现文件的传输,并且是基于UDP协议的。所有文件在该协议下可以实现发送并正确接收。此时需要了解的是UDP的数据包一次最多只能发送8K,所以我们想到通过拆包和创建窗体的方法来实现文件的传输。拆包主要是规定每个数据包的大小,然后计算具体的文件所需要的包数,创建窗体的目的是编写程序来进行分包发送和接收。通过系统运行窗体我们可以知道UDP不仅可以传送和接收小文件,还可以传输和接收较大的文件。通过实验可知UDP是不可靠的无连接传输,所以在传输过程中会发生丢包的情况,但大部分情况下传输还是比较好的。

关键词:UDP协议发送文件接收文件拆包 Winsock控件

1 实验的相关知识

1.1通信的模式

由于是实现点对点的文件传输,因此在程序中我们使用的是C/S的模式来实现通信。对于C/S的模式,即分为客户端和服务端。服务端用来接收客户端的连接,实现两端之间互相传输文件。采用C/S的模式可以更好的体现程序的功能设计思想,充分调用在LAN中的server和client两方面的处理能力,极大的减少网络上的信息流通量。C/S体系结构有可能提供一种开放式的、易伸缩扩展的分布式计算机环境,并保护硬件等投资。

1.2 UDP协议

该实验文件传输是在UDP协议下进行的,UDP提供无连接不可靠的用户数据包传输。其中每一个数据段只有8Byte相对于TCP传输开销较少,且无须对发送速率进行管理。UDP发送数据的速率仅仅受限于程序产生数据的速率,信源主机的性能及internet上可以利用的宽带。并且与TCP不同的是UDP不需要连接,可直接发送,传输数据较快,但同时其稳定性不好,易丢包。

1.3 Winsock控件

Winsock即Windows Sockets规范的简称,是目前最流行的网络通信应用程序接口之一。所谓Socket,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。Winsock控件工作在传输层上,在这一层上,目前主要流行的协议包括TCP和UDP两种:TCP协议适用于那些对于数据的可靠性要求比较高的情况,目前大多数的网络应用层协议都是基于TCP协议的(例如常用的HTTP、FTP、SMTP、POP3等协议);UDP 协议适用于对数据可靠性要求不高而对速度要求较高的情况,这里主要包括一些需要大流量

的(例如Real公司的RTSP协议,腾讯公司的QQ协议等)。

1.3.1 Winsock控件重要属性、方法和事件

(1) 属性

Protocol:

通过Protocol属性可以设置WinSock控件连接远程计算机使用的协议。可选的协议是TCP和UDP,对应的VB中常量分别是sckTCPProtocol和sckUDPProtocol,Winsock控件默认协议是UDP。

RemoteHostIP:

返回远程计算机的IP地址。本实验使用的是UDP协议,那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。如果是TCP协议,在客户端,当使用了控件的Connect方法后,远程计算机的IP地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。

ByteReceived:

返回当前接收缓冲区中的字节数。

State:

用于返回当前WinSock控件的状态。如表2-1所示。

表1-1 返回WinSock控件当前的状态

(2) 方法

Bind:

用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序

能再使用这个端口。

Listen:

只在使用TCP协议时有用。它将应用程序置于监听检测状态。

Connect:

当本地计算机希望和远程计算机建立连接时,就可以调用Connect方法。

Accept:

当服务器接收到客户端的连接请求后,服务器有权决定是否接受客户端的

请求。

SendData:

当连接建立后,要发送数据就可以调用SendData方法,该方法只有一个参

数,就是要发送的数据。

GetData:

当本地计算机接收到远程计算机的数据时,数据存放在缓冲区中,要从缓

冲区中取出数据,可以使用GetData方法。

PeekData:

和GetData方法类似,但PeekData在取得数据后并不把缓冲区清空。

(3) 事件

ConnectRequest:(TCP)

当本地计算机接收到远程计算机发送的连接请求时,控件的ConnectRequest事件将会被触发。

SendProgress:

当一端的计算机正在向另一端的计算机发送数据时,SendProgress事件将

被触发。SendProgress事件记录了当前状态下已发送的字节数和剩余字节数。

SendComplete:

当所有数据发送完成时,被触发。

DataArrival:

当建立连接后,接受到了新数据就会触发这个事件。注意:如果在接受到

新数据前,缓冲区中非空,就不会触发这个事件。

Error:

当在工作中发生任何错误都会触发这个事件。

相关文档
最新文档