UDP文件传输的设计与实现_第1页
UDP文件传输的设计与实现_第2页
UDP文件传输的设计与实现_第3页
UDP文件传输的设计与实现_第4页
UDP文件传输的设计与实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、哈尔滨工程大学本科生专业认识实训专题报告实训专题报告题 目: UDP文件传输系的设计 实训名称: 班 级: 学 号: 学生姓名: 指导教师: 哈尔滨工程大学2013年8月30日7摘 要UDP(User Datagram Protocol)协议的全称是用户数据报协议,在网络中它与TCP(Transmission Control Protocol)协议一样用于处理数据包,是一种无连接的协议。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户-

2、服务器模式的网络应用都需要使用UDP协议1。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。本文在应用现有的C语言应用开发知识基础上,又应用了socket和多线程编程技术的有关知识。使用C语言以及标准库函数,在Windows平台上,开发基于UDP协议的文件传输系统。对UDP文件传输系统的调试结果显示:UDP文件传输系统实现了文件在客户端和服务端之间的发送和接收,传输过程中可显示文件信息,在传输过程中可中断传输,但暂时还不能保证完全不丢包。关键词:文件传输;socket编程技术;基本功能当前的世

3、界经济正在从工业经济向知识经济转变,这种以知识为基础的经济有两个重要的特点,就是信息化和全球化。而要实现信息化和全球化,就必须依靠完善的网络。计算机网络是核心,而信息的交流又是计算机网络中非常重要的部分,因此UDP协议就占了很大比重。由于UDP不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,比如我们聊天用的QQ所使用的就是UDP协议。虽然UDP是一个不可靠的协议,但它是分发信息的一个理想协议。UDP广泛应用在多媒体应用中,例如Progressive Networks公司开发的RealAudio软件,该软件所使用的协议就是基于UDP之上

4、的协议,大多数因特网电话软件产品也都是基于UDP协议的。基于以上分析,本文要涉及的UDP文件传输系统设计是一个具备基本功能的嵌入式系统。1需求分析与系统总体设计1.1 需求分析基于UDP文件传输系统应包含以下功能:在服务端和客户端实现基本的文件传输;在文件传输过程中显示文件的信息;在文件传输过程中可以取消文件传输过程。具体目标如下:(1)在客户端主机上能读取一个txt文件与服务端主机进行传输。(2)在传输过程中能显示文件信息,如文件名、保存路径、文件大小、传输进度等。(3)传输过程中可以选择中断文件传输过程。(4)本程序中要保证文件在传输的过程中实现完整传输,即不丢包。(5)界面尽量简洁大方,

5、程序运行时不要出现异常。本章主要讨论了系统的需求分析,从用户角度分析系统整体要实现的功能。需求分析表如表1.1所示。1.2 系统总体设计本软件是为了使文件传输变得更加方便、快捷和安全,所以设计难点是在传输控制方面,对于本软件来说,用户界面设计则不是那么重要。程序设计过程主要是通过Winsock控件进行UDP文件传输。分别在发送端和接收端建立控件Winsock,经过对Winsock控件程序的写入,然后通过端口号和IP地址的绑定来建立联系,直接可以传送文件,而且能准确地发送和接收。UDP文件传输系统主要是在客户端与服务端之间进行文件的传输,首先在一台计算机中选取一个文件,通过输入文件所在位置来实现

6、的该文件的读写,然后进行分包处理以便于后续的文件传送。在文件传输过程中要求显示文件信息,如文件名、保存路径、文件大小、传输进度等,使用户清楚文件传输的情况以便选择继续或取消,所以该软件还具备随时中断文件传输的功能。待文件发送后,另一台计算机要求能够接收该文件并读取、保存在计算机内。因此,开发人员需要编写两方面的代码,即服务端代码和客户端代码,然后再将这两部分的代码结合起来,本程序也不例外,需要编写这两方面的代码。系统功能模块图如图1.1所示。UDP文件传输系统功能描述:(1)客户端与服务端能够相互连接; (2)客户端与服务端能进行文件的发送和接收; (3)服务端能够完整地接收并读取客户端所发送

7、的文件; (4)能够在文件传输过程中中断该传输。需求分析表如表1.1所示表1.1 需求分析表需求功能需求描述文件分包处理1、将一个文件分成若干小包以便于文件的传输文件发送1、文件能在客户端和服务端之间进行传输;2、在传输过程中能够显示文件信息,如文件名、保存路径、文件大小、传输进度等文件接收与读取1、能够接收文件;2、能够读取文件2 UDP文件传输系统基本功能的实现2.1 实现“文件分包处理”功能首先使用WSAStartup()函数检查系统协议栈的安装情况,然后使用socket()函数创建套接口1,以确定协议类型,再调用bind()函数将创建的套接口与本地地址绑定,目的是确定本地地址和端口号2

8、。然后再在计算机中选择一个文件进行读取工作,通过调用fread,fwrite,fopen,fclose等函数实现对文件的打开、读写和关闭,通过输入文件所在位置来查找文件,若目标文件存在,则继续执行程序,将所选文件分装在定义数组内,等待传输;若目标文件不存在,则输出“ERROR”跳出程序执行。基于UDP文件传输系统文件分包处理UDP文件传输客户端控制协议图1.1 系统功能模块图2.2 实现“文件传输”功能要实现该功能,需要调用recvfrom函数和sendto函数来实现文件的接收功能和发送功能。文件传输结束后,使用closesocket()函数关闭套接口,最后调用WSACleanup()函数,结

9、束Windows Sockets API3。2.3 实现“客户端接收”功能首先使用socket()来建立一个UDP socket(),第二个参数为SOCK_DGRAM。然后初始化sockaddr_in结构变量并赋值。接着使用bind()把上面的socket()和定义的IP地址和端口绑定。这里检查bind()是否执行成功,如果有错误就退出。这样可以防止服务程序重复运行的问题。最后进入无限循环程序,使用recvfrom()进入等待状态,直到接收到客户程序发送的数据,就处理收到的数据,并向客户程序发送反馈。这里是直接把收到的数据发回给客户程序。UDP文件传输系统主界面图如图2.1所示。图2.1 UD

10、P文件传输系统主界面图3 UDP文件传输系统的调试与运行随着计算机网络的不断发展,软件调试技术也逐渐成熟,调试方法也越来越多样化,针对性更强。大体上来讲软件调试可分为两类:静态调试和动态调试。静态调试,即先输出寄存器的内容。在测试中出现问题,设法保留现场信息。把所有寄存器和主存中有关部分的内容打印出来,进行分析研究。用这种方法调试,输出的是程序的静止状态(程序在某一时刻的状态)为取得关键变量的动态值,在程序中插入打印语句。这是取得动态信息的简单方法,并可检验在某时间后某个变量是否按预期要求发生了变化。此方法的缺点是可能输出大梁需要分析的信息,必须修改源程序才能插入打印语句,这可能改变关键的时序

11、关系,引入新的错误。而动态调试则通常利用程序语言提供的调试功能或专门的调试工具来分析程序的动态行为。一般程序语言和工具提供的调试功能有检查主存和寄存器;设置断点,即当执行到特定语句或改变特定变量的值时,程序停止执行,以便分析程序此时的状态。4本程序则主要是对程序的每一个功能逐一测试,针对出现的问题不断调试,修改代码,最后达到满意的效果。本软件测试采用动态测试方法。其中关键的技术是如何设计有效的测试用例,以便用最小的代价达到测试的目的。软件需求测试结论在经过对各模块的测试后,已经能够证实该软件各方面的能力都可以。只是在支持播放格式上还有待加强。测试分析报告是在测试分析的基础上,对测试的结果以及测

12、试的数据等加以记录和分析总结。它也是测试过程中的一个重要环节,同时,它也是对软件性能的一个总的分析和认可及对不足之处的说明。因此,测试分析报告对于今后对软件的功能的加强,不足之处的弥补等都起着十分重要的提纲作用。另外,它还有利于今后软件开发者阅读原程序,根据测试提供的数据和结果,分析原代码,掌握各函数的功能和局限性。从而缩短软件开发者的再开发时间和所耗费的精力。从这方面上,我们不难发现,测试分析报告所指明的对象主要是针对于软件开发者5。4 结论该系统实现了文件在服务端与客户端之间的传输,并对该传输过程加以控制,即保证文件的完整传输和可在传输过程随时中断该过程。UDP文件传输系统的开发主要应用了

13、C语言编程技术和多线程编程技术。C语言知识的运用使得UDP文件传输系统的基本功能很容易地实现了,对代码的优化、缩减是对C语言编程的再一次应用。虽然UDP是一种不可靠的网络协议,但是在绝大多数情况下UDP协议都是非常有用的,因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到了严重的影响。反观UDP由于排除了信息可靠传递机制,将安全和排序功能交给上层应用来完成,极大,极大降低了执行时间,使速度得到了保证。Winsock规范不是一种网络协议,而是一套开放的、支持多种协议的Windows写的网络编程接口。Wins

14、ock可以访问很多种网络协议,可以把它当做一种协议的封装。在使用Winsock进行编程时,需要在指令中调用API函数,与Winsock有关的API,即WSAStartup函数,初始化Winsock服务,才能调用Winsock API函数;WSACleanup函数,用来终止Winsock的使用;socket函数、closesocket函数、send函数、recv函数、bind函数、 listen函数、accept函数、connect函数等。用connect()调用建立与另一套接口的连接,连接成功后,即可用send()和recv()传送数据。当会话结束后,调用closesocket()。带外数据根

15、据规定用send()和recv()来接收。如果终端协议有缓冲区空间,且数据不能在一定时间成功发送,则认为连接中断,其后续的调用也将以WSAETIMEOUT错误返回。SOCK_DGRAM类型套接口允许使用sendto()和recvfrom()从任意端口发送或接收数据报。如果这样一个套接口用connect()与一个指定端口连接,则可用send()和recv()与该端口进行数据报的发送与接收。UDP文件传输系统虽然可以实现文件的传输,传输过程可现实文件信息,如文件名、保存路径、文件大小、传输进度等,还可以在传输过程中随时取消该进程,传输速度非常快,且操作简单,这些都是UDP传输系统的优点。但是仍然存在很多不足,在传送小文件时缺点体现还不明显,而传输大文件时总是或多或少的存在丢包的现象,该问题始终没有很好的解决,用户界面方面没有什么显著特点,不够美观,这些还需要后期开发时再对UDP文件传输系统进行改进和优化。参考文献1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论