毕业设计基于SOCKET的大文件批量传输系统的设计与实现.docx
《毕业设计基于SOCKET的大文件批量传输系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计基于SOCKET的大文件批量传输系统的设计与实现.docx(73页珍藏版)》请在冰豆网上搜索。
毕业设计基于SOCKET的大文件批量传输系统的设计与实现
免责声明:
本文档来自网络并经精心整理,提供免费阅读,文章版权属于原创者,请注意保护知识产权,请您下载后勿作商用,只可学习交流使用。
基于SOCKET的大文件批量传输系统的设计与实现
摘要:
Socket在英文中是插座的意思,它的设计者实际上是暗指电话插座。
因为在Socket环境下编程很像是模拟打电话,Internet的IP地址就是电话号码,要打电话,需要电话插座,在程序中就是向系统申请一个Socket,以后两台机器上的程序“交谈”都是通过这个Socket来进行的。
对程序员来说,也可以把Socket看成一个文件指针,只要向指针所指的文件读写数据,就可以实现双向通信。
利用Socket进行通信,有两种主要的方式。
第一种是面向连接的流方式。
顾名思义,在这种方式下,两个通信的应用程序之间先要建立一种连接链路,其过程好像在打电话。
一台计算机(电话)要想和另一台计算机(电话)进行数据传输(通话),必须首先获得一条链路,只有确定了这条通路之后,数据〔通话)才能被正确接收和发送。
这种方式对应的是TCP(TransportControlProtocol)协议。
第二种叫做无连接的数据报文方式,这时两台计算机像是把数据放在一个信封里,通过网络寄给对方,信在传送的过程中有可能会残缺不全,而且后发出的信也有可能会先收到,它对应的是UDP(UserDatagramProtocol)协议。
流方式的特点是通信可靠,对数据有校验和重发的机制,通常用来做数据文件的传输。
网络的快速发展和普及,文件传输愈来愈频繁,传输文件容量越来越大,单纯的套接字传输不能满足需求。
WindowSocket编程和多线程技术结合可以很好的解决这一问题,使得文件传输效率大大提高能很好的支持大文件、批量传输,提高服务器的响应能力和并发处理能力。
WindowSocket采用字节流的方式传输数据,可以很好的保证传输的稳定性和安全性;而采用动态哈夫曼编码实现传输流的压缩,减轻网络传输负担,提高网络性能满足用户的需求。
关键字:
Socket;TCP;多线程;RUP;UML
Thelargefilesbulktransmissionbasedonsocketsystemdesignandimplementation
(HunancityUniversityThecomputerscienceis2,004levelsofcomputersciencesandthetechnicalspecialty,Hunanyiyang413000)
Abstract:
SocketsocketinEnglishisthemeaning,itisimpliedinfact,thedesignersoftelephonesocket.Socketenvironmentbecausetheprogrammingissimilartoanalogtelephone,InternetIPaddressisthetelephonenumbertocall,theneedtophonejack,intheproceedingsistoapplyasystemSocket,aftertwomachinesontheprocedures"conversation"ThroughthisSocketareconducted.Theprogrammers,canalsoSocketasaguidelinedocument,aslongastheguidelinesreferredtothedocumentstoreadandwritedata,wecanachievetwo-waycommunication.SocketCommunicationstouse,therearetwomainways.Thefirstistoconnecttheflow-orientedapproach..Asthenamesuggests,inthisway,thetwocommunicationsapplicationstoestablishalinkbetweenthefirstlink,theprocessseemstobecalled.Acomputer(telephone)andtoanothercomputer(phone),datatransmission(call),youmustfirstobtainalink,onlyidentifiedthispathway,thedata(all)canbeproperlyreceiveandsend.ThisisthecorrespondingTCP(TransportControlProtocol)agreement.Thesecondiscalledadatalinktothetext,thentwocomputerssuchasdataonanenvelope,senttoeachotherthroughthenetwork,believedtobeintheprocessoftransmissionmaybeincomplete,andissuedaletterMayalsohavetoreceive,itisthecorrespondingUDP(UserDatagramProtocol)agreement.
Wayflowofcommunicationischaracterizedbyreliable,thedataandre-issuedacheckmechanism,usuallyusedforthetransmissionofdatafiles.Network'srapiddevelopmentandpopularityoffiletransfermoreandmorefrequent,increasingthecapacityoftransferringfiles,asimplesockettransmissioncannotmeetthedemand.WindowSocketprogrammingandmulti-threadingcancombinegoodsolutiontothisproblem,makingfiletransfergreatlyenhancedtheefficiencyoflargefilescanbeverygoodsupport,bulktransmission,improveservercapacityandwiththeresponsecapacity.WindowSocketusedbyte-waytransmissionofdata,canguaranteeagoodtransferofstabilityandsecurityandtheuseofdynamicHuffmanCodingtransportstreamcompression,reducetheburdenontransmissionnetworks,improvenetworkperformancetomeettheneedsofusers.
Keywords:
Socket;TCP;multi-threaded;RUP;UML;
1.绪论
1.1面向对象思想和UML
面向对象方法(Object-OrientedMethod)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO(Object-Oriented)方法,是建立在“对象”概念基础上的方法学。
对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。
而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。
所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统面向对象思想起源于面向对象语言,伴随着面向对象编程语言的发展和流行,以其新型的独具优越的新方法成为当今软件开发的主流思想。
统一建模语言(UML是UnifiedModelingLanguage的缩写)是用来对软件密集系统进行可视化建模的一种语言。
UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
UML是当今软件行业的通用语言,由于其独特的思想和对以往软件开发经验教训的总结,同时结合当今流行的面向对象的开发思想,使其广泛的应用于软件行业中。
从最初的1.0到现在的2.0,更贴近实际开发过程。
1.2RUP迭代开发
RUP(RationalUnifiedProcess,统一软件开发过程,统一软件过程)是一个面向对象且基于网络的程序开发方法论。
根据Rational(RationalRose和统一建模语言的开发者)的说法,好像一个在线的指导者,它可以为所有方面和层次的程序开发提供指导方针,模版以及事例支持。
RUP和类似的产品--例如面向对象的软件过程(OOSP),以及OPENProcess都是理解性的软件工程工具--把开发中面向过程的方面(例如定义的阶段,技术和实践)和其他开发的组件(例如文档,模型,手册以及代码等等)整合在一个统一的框架内。
1.3套接字的发展
Winsock是指WindowsSockets,是一个为MicrosoftWindows定义的网络编程规范。
他源于UNIX中的Berkely套接字(Socket),使用WindowsSockets编制的应用程序,可以同其他基于WindowsSocketsAPI编制的应用程序通过网络进行通讯,并且在编制基于Winsock的应用程序时,不需要关心网络通信协议本身是如何工作的。
Winsock不仅继承了BerkelySockets的功能,而且还针对Windows作了扩展,Winsock还支持多种网络通讯协议,如:
常见的TCP/IP(TransmissionControlProtocol/InternetProtocol)协议、XNS(XeroxNetworkSystem),DigitalEquipment公司的DECNet协议,Novell公司的IPX/SPX(InternetPacketExchange/SequencedPackedExchange)等。
目前Winsock规范主要针对TCP/IP,但只要提供了实现Winsock的动态连接库,任何网络通讯协议都可以同Winsock兼容。
1.4多线程技术
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。
它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。
线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。
线程是在同一时间需要完成多项任务的时候被实现的。
多线程的优点:
使用线程可以把占据长时间的程序中的任务放到后台去处理,用户可以同时处理多件事情,不需等待执行提高了程序的运行速度。
可以为每个线程设置优先级,以调整工作进度。
1.5基于SOCKET的大批量文件传输系统的功能和特点
本系统的设计与实现主要采用SOCKET编程。
同时,使用多线程技术,提高服务器的响应能力和并发处理能力;采用动态哈夫曼编码实现传输流的压缩,减轻网络传输负担;支持断点续传,用户可以自己选择采用断点续传还是重新上传;实现大文件上传,一次可以上传多个文件;提供接口全面,可以动态设置上传保存路径,设置允许扩展名,允许最大大小等;可以限制上传单个文件大小,控制上传带宽上限,允许文件扩展名,拒绝文件扩展名等。
1.6目的
通过这次设计实践软件开发过程,运用RationalRose进行用例建模和分析设计加深对UML的认识,采用RUP迭代开发方法进行开发进一步熟悉面向对象思想。
用Visualstudio2005集成开发环境和ServerSQL2000数据库进行开发实现;应用WinRuner进行单元测试和集成测试。
同时采用MicrosoftProject画甘特图,对各阶度段进行跟踪,确保更个软件开发过程朝着计划方向稳定前进;保证按时高质的完成各项任务,顺利的完成课题的各项要求,提升自己各方面的能力。
2可行性分析
2.1编写目的
首先,我们开发此系统当作一个产品而不只是看成一个设计,是为了方便用户传输文件,提高效率。
为此,我们把它看做一个项目采用统一过程(RUP)进行开发,采用面向对象的思想结合UML进行分析设计和用例建模,在掌握主流开发思想和方法的同时,确保整个项目朝着正确和可控的方向推进,使整个项目按时,保质完成。
2.1.2可行性研究的前提
2.1.2.1要求
(1)功能要求
①生成数据:
要求管理员添加用户的基本信息,添加进数据库方便日后使用。
②安全性:
要求用户在没有授权的情况下,不能登录服务器。
③界面要求:
要求界面友好,让使用者倍感舒服,使用方便。
2.1.2.2开发目标
(1)利用WindowSocket字节流的方式传输数据,可以很好的保证传输的稳定性和安全性;而采用动态哈夫曼编码实现传输流的压缩,减轻网络传输负担,提高网络性能满足用户的需求。
(2)为了完善管理,用户必须是授权用户,否则无法登录服务器。
(3)使用多线程技术,使得文件传输效率大大提高能很好支持大文件、批量传输,提高服务器的响应能力和并发处理能力。
(4)采用断点续传技术,减少重复传输量,提高网络资源的利用率,使服务器磁盘利用率提高,减少冗余,提高服务器性能和处理能力。
2.1.2.3环境
(1)开发环境
硬件:
奔四微机一台(服务器/客户机,回路地址需网卡)。
软件:
Windows2000操作系统,SQLServer2000数据库系统,VisualStudio.2005平台。
(2)运行环境
硬件:
奔四以上微型计算机。
软件:
服务器端必须运行在Windows2000操作系统,同时安装有SQLServer2000数据库。
客户端可以运行在Windows2000和WindowsXP。
2.1.2.4条件和限制
(1)此系统的开发,主要是面向普通用户,并且没有原系统作为参考,因此,可利用的信息和资源很少,这给开发过程带来了一定的难度。
(2)此系统的开发,只有两个开发人员,并且没有很好的开发经验。
这也使得系统存在了一定的局限性。
2.2建议系统可行性分析
2.2.1系统简介
系统是为了能完成计算机用户所要求的各项功能而量身定造的系统。
它主要由四个用例组成:
登陆服务器、传输文件、设置服务器信息、管理用户。
系统业务用例图:
图1系统业务用例图
2.2.2系统的优越性
(1)利用WindowSocket字节流的方式传输数据,可以很好的保证传输的稳定性和安全性;而采用动态哈夫曼编码实现传输流的压缩,减轻网络传输负担,提高网络性能满足用户的需求。
(2)为了完善管理,用户必须是授权用户,否则无法登录服务器;密码采用MD5加密增强安全性,防止用户信息的泄露。
(3)使用多线程技术,使得文件传输效率大大提高能很好支持大文件、批量传输,提高服务器的响应能力和并发处理能力。
(4)采用断点续传技术,减少重复传输量,提高网络资源的利用率,使服务器磁盘利用率提高,减少冗余,提高服务器性能和处理能力。
2.2.3采用系统可能带来的影响
用户可能需要一定时间熟悉系统的各种操作。
管理员进行用户信息的管理和数据库的维护,在开始阶段工作量比较大。
同时管理员还需对磁盘进行整理,保证用户需求。
2.2.4技术可行性分析
技术可行性是可行性研究的重要内容。
进行技术可行性研究,首先要分析系统业务流程,对业务系统进行建模,然后绘制所要开发新系统的系统业务用例图和活动图、协作图等。
分析所建议的系统可能带来的影响及其优越性,最后评价系统的技术可行性,即在限定的条件下,利用现有的技术,现有数量和质量的开发人员,和可以利用的资源,在规定的期限内,开发是否能够完成。
2.2.5限制条件的影响
虽然系统的开发存在几个不利因素,此系统的各项功能都是开发人员分析比较常用的比较熟悉的,并且所有开发人员都有很强的分析设计与代码编写能力,加上一个开发人员对网络通信机制比较了解。
因此各种限制条件只是增加了系统开发的难度,但并不影响系统开发的成败。
2.2.5技术条件与人员数量和质量
在开发人员由计算机系的一名老师和一名学生组成,都熟练掌握了开发此系统的开发平台和相关技术等。
因此,开发此系统的技术与人员质量完全能达到要求。
2.2.6完成期限
此系统的开发难度比较大,当时准备充分,进度安排合理,因此可以按期完成。
2.3经济可行性分析
2.3.1估计开发成本
在开发过程中,需要用到的资源,只包括两台高配置计算机,以及有合适的开发环境,这些条件都已经满足,并且是可利用廉价的资源。
从预期的开发情况来看,整个开发成本只有两部分,一是对开发人员的工作报酬,另一部分是开发所需资料的购买经费。
但是如果此系统从软件公司购买,则至少需要3-4万元以上的购买费用。
因此,自行开发是一种最好的方式。
2.3.2收益情况分析
此基于SOCKET的大文件批量传输系统使用.NET平台以及最新的开发技术,因此能使用的期限也比较长,实用性很强,是低成本高效益。
3.系统设计与分析
3.1概念的定义
3.1.1基于SOCKET的大文件批量文件传输系统
Socket在英文中是插座的意思,它的设计者实际上是暗指电话插座。
因为在Socket环境下编程很像是模拟打电话,Internet的IP地址就是电话号码,要打电话,需要电话插座,在程序中就是向系统申请一个Socket,以后两台机器上的程序“交谈”都是通过这个Socket来进行的。
对程序员来说,也可以把Socket看成一个文件指针,只要向指针所指的文件读写数据,就可以实现双向通信。
利用Socket进行通信,有两种主要的方式。
第一种是面向连接的流方式。
顾名思义,在这种方式下,两个通信的应用程序之间先要建立一种连接链路,其过程好像在打电话。
一台计算机(电话)要想和另一台计算机(电话)进行数据传输(通话),必须首先获得一条链路,只有确定了这条通路之后,数据〔通话)才能被正确接收和发送。
这种方式对应的是TCP(TransportControlProtocol)协议。
第二种叫做无连接的数据报文方式,这时两台计算机像是把数据放在一个信封里,通过网络寄给对方,信在传送的过程中有可能会残缺不全,而且后发出的信也有可能会先收到,它对应的是UDP(UserDatagramProtocol)协议。
流方式的特点是通信可靠,对数据有校验和重发的机制,通常用来做数据文件的传输。
网络的快速发展和普及,文件传输愈来愈频繁,传输文件容量越来越大,单纯的套接字传输不能满足需求。
WindowSocket编程和多线程技术结合可以很好的解决这一问题,使得文件传输效率大大提高能很好的支持大文件、批量传输,提高服务器的响应能力和并发处理能力。
WindowSocket采用字节流的方式传输数据,可以很好的保证传输的稳定性和安全性;而采用动态哈夫曼编码实现传输流的压缩,减轻网络传输负担,提高网络性能满足用户的需求。
3.1.2功能定义
3.1.2.1客户端
(1)连接服务器用户知道服务器IP地址和端口可以进行连接服务器进入用户登陆。
(2)登录连接上服务器后,拥有授权帐号和密码的用户可以登录服务器。
(3)浏览服务器目录信息登录成功的用户可以点击浏览服务器目录,查看已上传的文件,上传完毕后用户可以点击相应目录,更新服务器目录查看上传结果。
(4)创建目录、删除目录登录成功的用户可以创建自定义的目录名。
也可以删除指定目录。
(5)发送文件
①选择上传目录登录成功的用户可以选择自己想上传的文件目录,文件能够上传到指定的目录,用户可以通过浏览服务器目录,查看文件上传指定目录。
②选择上传文件登录成功的用户可以浏览本地磁盘,选择任何自己想上传的文件,可已选择多个文件进行上传。
③发送登录成功的用户在选择上传目录和文件后,可以点击发送进行文件的传输。
④断点续传用户上传的文件是异常中断,未传完的文件是,可以选择断点续传或覆盖原文件
(6)断开连接登录成功的用户可以断开与服务器的连接,可以再次连接服务器或退出应用程序。
3.1.2.2服务器端
(1)服务
①启动服务管理员启动程序后可以点击开启服务器服务,服务器将监听指定端口,等待用户上传文件。
②关闭服务管理员可以关闭服务器,关闭端口,断开客户端与服务器的连接。
(2)设置管理员可以设置服务器端口,定期跟换服务器端口,保证服务器的安全性。
(3)接收文件当监听到用户发送文件请求是,为用户开启一个文件接收线程,接收用户文件,同时将接收到文件信息写入数据库,记录上传大小;当传输中断时,用户再次上传可以选择断点续传或覆盖源文件。
(4)用户管理
①查询用户管理员可以查询已授权的用户,查看用户名。
②添加用户管理员可以添加系统新用户,设置用户名和密码。
③编辑用户管理员可以编辑指定用户名用户,进行密码的修改。
④删除用户管理员可以删除指定用户。
3.1.3C/S模型瘦客户端/胖服务器的概念
C/S模型将网络中的程序分成两部分;客户部分和服务器部分。
在这种模型下,客户请求服务器提供服务或信息,服务器方对客户的请求作出响应,在多数情况下,需要设计的网络应用程序是独立的客户和服务器程序。
瘦客户机是使用专业嵌入式处理器、小型本地闪存、精简版操作系统的基于PC工业标准设计的小型行业专用商用PC。
配置包含专业的低功耗、高运算功能的嵌入式处理器。
不可移除地用于存储操作系统的本地闪存、以及本地系统内存、网络适配器、显卡和其它外设的标配输入/输出选件。
瘦客户机没有可移除的部件,可以提供比普通PC更加安全可靠的使用环境,以及更低的功耗,更高的安全性。
瘦客户、机针对工作密集型行业设计,适用于应用相对简单统一,使用群体大的行业前端客户设计。
胖服务器模式,这种模式最适合一个集中的服务器执行的处理。
一个典型的胖客户端包含一个或多个在用户的PC上运行的应用程序,处理一些或所有的业务规则,同时提供一个丰富的用户界面作出响应。
服务器负责管理对数据的访问并负责执行一些或所有的业务规则。
这种模式也有一些“变种”,它们主要处理业务规则和数据的物理位置。
服务器的程序通常初始化就进入睡眠状态,他简单的等待客户应用程序的请求并给