毕业设计(论文)题目多线程网络文件传输系统的设计与实现学生姓名学号专业班级指导教师评阅教师完成日期2013年5月15日2学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。作者签名:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密□,在_________年解密后适用本授权书。2、不保密□。(请在以上相应方框内打“√”)作者签名:年月日导师签名:年月日3目录摘要……………………………………………………………………………1前言……………………………………………………………………………21绪论…………………………………………………………………………41.1研究背景及意义………………………………………………………………41.2国内外研究现状………………………………………………………………41.3本文研究内容…………………………………………………………………52系统需求分析………………………………………………………………62.1功能模块描述…………………………………………………………………62.2软件需要实现功能……………………………………………………………72.3通信原理及过程………………………………………………………………73主要实现技术………………………………………………………………83.1关键要点分析…………………………………………………………………83.2数据传输协议……………………………………………………………83.3C/S构架……………………………………………………………………123.4多线程编程…………………………………………………………………123.5多线程技术…………………………………………………………………133.6文件的分块…………………………………………………………………153.7多线程文件传输与断点续传…………………………………………………163.8Windowssocket编程………………………………………………………1643.9套接字和客户—服务器通信…………………………………………………204系统概要设计与实现………………………………………………………204.1通信过程……………………………………………………………………214.2SOCKET建立连接过程………………………………………………………214.3文件的传输…………………………………………………………………235系统功能的演示……………………………………………………………255.1服务器和客户端运行界面……………………………………………………255.2文件传输的演示……………………………………………………………266总结与展望…………………………………………………………………286.1本文完成的主要工作………………………………………………………286.2未来研究展望………………………………………………………………28致谢……………………………………………………………………………29参考文献………………………………………………………………………301多线程网络文件传输系统的设计与实现学生:指导教师:摘要:文件传输是因特网上最常用的服务之一,多线程文件传输能有效地提高文件传输的速度和效率,本系统采用windowssocket实现,套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。系统分客户端软件和服务器端软件两部分,同时需要用到多线程相关知识,一个应用程序可以同时有多个线程一起运用CPU的资源,大大的加强对CPU的利用率,同时也从另一个方面加快了传输的速度。由于TCP/IP连接协议的服务是设计客户端/服务器应用程序时的主流标准,所以本软件主要采用TCP/IP协议的网络通信技术;客户端,服务器类是从CAsyncSocket类中继承来的,因此本软件通信完全是异步的;程序在WindowsXP系统、VisualC++6.0下编译通过,且运行良好。关键词:文件传输套接字多线程Abstract:FiletransferisoneofthemostcommonlyusedservicesontheInternet,amulti-threadedfiletransfercaneffectivelyimprovethefiletransferspeedandefficiency,thissystemusetheWindowssocketsimplementation,Socketcanberegardedastwonetworkapplicationsforcommunications,eachanendpointofcommunication.Clientsoftwareandserversoftwaresystempointstwoparts,theneedtousemultithreadingknowledgeatthesametime,anapplicationcanhavemultiplethreadsatthesametimewiththeuseofCPUresources,greatlystrengthentheCPUutilization,butalsofromanotheraspecttospeedupthetransmissionspeed.AsTCP/IPagreementlinkingtheserviceisdesignedclient/serverapplicationproceduresforthemainstreamstandards,Therefore,thesoftwareusedmainlyTCP/IPagreementnetworkcommunicationtechnology;client,serverfromCAsyncSocketinheritedcategory,andthereforethesoftwareiscompletelyasynchronouscommuni-cation;proceduresinWindowsXPsystemandunderVisualC++6.0compiler,andRunningwell2Keywords:ThefiletransferThesocketmultithreading前言如今随着计算机应用的普及,已经有越来越多的人正在Internet(国际互联网)上畅游,许多人也已经将进入Internet作为下一个计算机升级的目标,而使用Internet进行文件传输,则是计算机联入Internet的一个重要功能之一。下面我们详细地谈一谈如何使用Internet的FTP功能进行文件传输。FTP中文意思为文件传输协议,用于管理计算机之间的文件传送。一般说来,我们联网的主要目的就是实现信息共享,而文件传输则是计算机间实现信息共享的一个非常重要的内容之一。在Internet上早期实现文件传输并不是一件很容易的事,因为Internet是一个非常复杂的计算机环境,有个人电脑、工作站、MAC、服务器、还有大型机等。据统计目前连接在Internet上的计算机已经有四千多万台,并且每年正在以20%的速度增长。而这些连接在网上的计算机也在各自运行着不同的操作系统,有运行Windows、Dos的个人电脑,有运行MacOS的苹果机,也有运行unix的服务器等,而各种操作系统的文件结构也各不相同。要解决这种异种机、异种操作系统之间的文件传输交流问题,需要建立一个统一的文件传输协议,这就是FTP。基于不同的计算机操作系统,就有不同的FTP应用程序,而所有的这些应用程序都遵守同一种协议,这样我们就可以把自己的文件传送给别人,或者从其他的计算机用户中获得文件。因此文件传输通常就是指计算机利用Internet进行文件传输的服务。FTP允许您从数以千计的远程主机上把文件传输到您的主机上,您可以传输计算机程序、图像、声音、电影或其它任何文件。FTP用于Internet上的控制文件的双向传输。在实现的层面上,FTP又可理解为一个可用于文件传输的客户机/服务器系统(C/S架构),该系统包括客户机端程序和服务器端程序,客户端和服务器端通信规则为FTP协议。用户通过客户机程序向服务器程序发出命令请求,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序接收到这个文件,将其存放在用户目录中。在通信协议的分层模型中,文件传输协议是在TCP(TransmissioncontrolProtocol,传输控制协议)之上的一个应用层协议,应用程序之间的通信需要用到传输层提供的字节流透明无误传输服务。Windows操作系统具有TCP/IP协议栈,应用程序可通过WinsockAPI函数的调用实现端到端透明数据链接的建立。网络应用程序是一种在不同系统的新进程间通过网络通信协议进行的进程间的通3信问题。在网络中为了标识通信的进程,首先要标识网络中进程所在的主机,其次要标识主机用IP地址来标识不同的主机,主机上不同的进程要用使用端口号来标识。其次,在Windows中编程是通过套接字SOCKET来编程的,套接字可以看成是两个网络应用程序进行的通信时,各自通信连接种的一个端点。通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡NIC的传输介质将这段信息发送到另一台主机的Socket种,使这段信息能穿传送到其他程序中。要通过Internet进行通信,至少需要一对套接字,其中一个运行在客户端,称之为ClientSocket,另一个运行于服务器端面,称为ServerSocket。根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。服务器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。客户端请求是由客户端的套接字提出连接请求,要连接的目标是服务器端套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器端套接字提出连接请求。连接确认是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。而服务器端继续处于监听状态,继续接收其他客户端的连接请求。网络传输文件的时候还需要用到多线程和线程间访问互斥文件的问题。创建线程后,一个应用程序可以同时有多个线程一起运用CPU的资源,大大的加强对CPU的利用率。同时也从另一个方面加快了传输的速度。但是要遇到一个问题就是各个线程对文件的共享问题。所以建立好的信号量来实现他们之间的访问规则是很重要的。否则,传输的文件将会出现很多问题。41绪论这一部分主要介绍多线程文件传输的相关背景和研究的意义,大致概括了国内外研究的现状,最后说明了本系统需要研究的主要内容。1.1研究背景及意义1.1.1研究背景目前,国内外企业对局域网的文件传输系统认识和使用情况并不好,各个企业单位在局域网内实现文件传输,资源共享还有很大的缺陷。技术无论是从理论上或实践上都还不够完善。文件传输系统由于比较复杂,可变因素较多,安全性低,因此发展还不成熟。但是随着科学技术的发展,各种以局域网为单位的文件传输系统已