多线程网络文件传输系统的设计与实现Word下载.docx

上传人:b****1 文档编号:1332352 上传时间:2023-04-30 格式:DOCX 页数:48 大小:455.97KB
下载 相关 举报
多线程网络文件传输系统的设计与实现Word下载.docx_第1页
第1页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第2页
第2页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第3页
第3页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第4页
第4页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第5页
第5页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第6页
第6页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第7页
第7页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第8页
第8页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第9页
第9页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第10页
第10页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第11页
第11页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第12页
第12页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第13页
第13页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第14页
第14页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第15页
第15页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第16页
第16页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第17页
第17页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第18页
第18页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第19页
第19页 / 共48页
多线程网络文件传输系统的设计与实现Word下载.docx_第20页
第20页 / 共48页
亲,该文档总共48页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

多线程网络文件传输系统的设计与实现Word下载.docx

《多线程网络文件传输系统的设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《多线程网络文件传输系统的设计与实现Word下载.docx(48页珍藏版)》请在冰点文库上搜索。

多线程网络文件传输系统的设计与实现Word下载.docx

2、不保密□。

(请在以上相应方框内打“√”)

年月日

导师签名:

摘要……………………………………………………………………………1

前言……………………………………………………………………………2

1绪论…………………………………………………………………………4

1.1研究背景及意义………………………………………………………………4

1.2国内外研究现状………………………………………………………………4

1.3本文研究内容…………………………………………………………………5

2系统需求分析………………………………………………………………6

2.1功能模块描述…………………………………………………………………6

2.2软件需要实现功能……………………………………………………………7

2.3通信原理及过程………………………………………………………………7

3主要实现技术………………………………………………………………8

3.1关键要点分析…………………………………………………………………8

3.2数据传输协议……………………………………………………………8

3.3C/S构架……………………………………………………………………12

3.4多线程编程…………………………………………………………………12

3.5多线程技术…………………………………………………………………13

3.6文件的分块…………………………………………………………………15

3.7多线程文件传输与断点续传…………………………………………………16

3.8Windowssocket编程………………………………………………………16

3.9套接字和客户—服务器通信…………………………………………………20

4系统概要设计与实现………………………………………………………20

4.1通信过程……………………………………………………………………21

4.2SOCKET建立连接过程………………………………………………………21

4.3文件的传输…………………………………………………………………23

5系统功能的演示……………………………………………………………25

5.1服务器和客户端运行界面……………………………………………………25

5.2文件传输的演示……………………………………………………………26

6总结与展望…………………………………………………………………28

6.1本文完成的主要工作………………………………………………………28

6.2未来研究展望………………………………………………………………28

致谢……………………………………………………………………………29

参考文献………………………………………………………………………30

多线程网络文件传输系统的设计与实现

学生:

指导教师:

摘要:

文件传输是因特网上最常用的服务之一,多线程文件传输能有效地提高文件传输的速度和效率,本系统采用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,andRunningwell

Keywords:

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函数的调用实现端到端透明数据链接的建立。

网络应用程序是一种在不同系统的新进程间通过网络通信协议进行的进程间的通

信问题。

在网络中为了标识通信的进程,首先要标识网络中进程所在的主机,其次要标识主机用IP地址来标识不同的主机,主机上不同的进程要用使用端口号来标识。

其次,在Windows中编程是通过套接字SOCKET来编程的,套接字可以看成是两个网络应用程序进行的通信时,各自通信连接种的一个端点。

通信时,其中的一个网络应用程序将要传输的一段信息写入它所在主机的Socket中,该Socket通过网络接口卡NIC的传输介质将这段信息发送到另一台主机的Socket种,使这段信息能穿传送到其他程序中。

要通过Internet进行通信,至少需要一对套接字,其中一个运行在客户端,称之为ClientSocket,另一个运行于服务器端面,称为ServerSocket。

根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:

服务器监听、客户端请求、连接确认。

服务器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

客户端请求是由客户端的套接字提出连接请求,要连接的目标是服务器端套接字。

为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器端套接字提出连接请求。

连接确认是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。

而服务器端继续处于监听状态,继续接收其他客户端的连接请求。

网络传输文件的时候还需要用到多线程和线程间访问互斥文件的问题。

创建线程后,一个应用程序可以同时有多个线程一起运用CPU的资源,大大的加强对CPU的利用率。

同时也从另一个方面加快了传输的速度。

但是要遇到一个问题就是各个线程对文件的共享问题。

所以建立好的信号量来实现他们之间的访问规则是很重要的。

否则,传输的文件将会出现很多问题。

1绪论

这一部分主要介绍多线程文件传输的相关背景和研究的意义,大致概括了国内外研究的现状,最后说明了本系统需要研究的主要内容。

1.1研究背景及意义

1.1.1研究背景

目前,国内外企业对局域网的文件传输系统认识和使用情况并不好,各个企业单位在局域网内实现文件传输,资源共享还有很大的缺陷。

技术无论是从理论上或实践上都还不够完善。

文件传输系统由于比较复杂,可变因素较多,安全性低,因此发展还不成熟。

但是随着科学技术的发展,各种以局域网为单位的文件传输系统已经进入稳健发展期,比如说市面上比较普遍使用的QQ、UC、飞鸽传书等以内部网络为中心的资源共享系统也即将进入高速发展期。

在国内,随着企业资源管理的规范化和规模的不断扩大,企业的计算机资源管理将不仅仅停留在依靠硬件或者Internet网络获取,而且将会向着安全的内部网络化资源管理方式迈进。

1.1.2研究意义

1.学会采用多线程提高传输速度

文件传输是因特网上最常用的服务之一,多线程文件传输能有效地提高文件传输的速度和效率。

2.学会利用windowssocket进行高性能开发

本系统采用windowssocket实现,windowssocket是因特网上进行通信程序设计的常用方法,是开发高性能网络程序的基础,采用socket方法可以编写出满足各种应用需要的网络程序,具有很强的适应性。

3.掌握网络底层开发技术

本课题通过对网络文件传输系统的开发,使我掌握socket编程技巧,熟悉网络底层软件开发方法。

1.2国内外研究现状

目前,国内外企事业单位对文件传输系统的认识和使用情况并不好,各企事业单位大多在局域网内实现文件传输,资源共享方面还存在较多缺陷,对相关技术的理论研究也不够深入。

由于文件传输系统的复杂性、多变性、安全性低等特点,使得其发展还不

够成熟。

随着科学技术的发展,各种以局域网或是广域网为基础的文件传输系统已经进入稳健发展时期。

而计算机网络通信技术已趋于成熟,促使应用于文件传输的软件种类不断增多。

由于网络编程技术的发展,人们使用的文件传输软件也表现出更多的高性能、易操作、稳定好等特点,但是开发者在注重下载功能实现的同时,往往忽略了用户上传文件的需要。

在国外,用户使用的传输软件主要有网络蚂蚁(NetAnt)和网际快车(FlashGet)。

这些软件大都是针对用户下载来设计的,能够实现功能完善的下载服务。

在国内,用户使用的文件传输软件主要是迅雷和飞鸽传书。

迅雷主要针对的是文件快速下载的实现,而飞鸽传书则主要应用于局域网中的文件共享。

目前常用的文件传输软件往往功能比较单一,也缺乏良好的用户使用界面和方便快捷的服务。

许多软件在断点续传、多线程传输、进度显示以及文件的动态压缩等方面还存有欠缺。

随着企事业单位资源管理的规范化和规模的不断扩大,计算机的资源管理以及办公文档的发布和传递将不仅仅停留在依靠硬件或者电子邮件的获取上,而是会向着更全面、更可靠、更快捷的方向发展。

过去,企事业单位往往将文件传输系统与OA系统结合在一起并将其作为OA系统的一个模块来处理。

对于文档传输模块的设计,通常都是为办公文档管理而设计,并不能考虑到一些特殊文档的管理情况,例如多个文档同时传输的高效存储访问的问题等。

综上所述,目前的文件传输系统在文件多线程传输的实现上还不是很完善,虽然可供用户选择的文件传输软件种类繁多,但仍然存在质量良莠不齐、功能各有异同的问题,用户在使用的时候也总会遇到诸多的不便,需要对一些技术做进一步的改进和提高,对于那些经常需要同时传输多个文件的特殊行业和生产领域,更加需要有针对性的进行改善。

1.3本文研究内容

1.软件设计原理

本软件是在Windows操作系统下,VisualC++6.0环境下借用WinSock控件实现的,是基于TCP/IP协议的C/S模式,在服务器端和客户端分别以socket为中心进行编程,客户端和服务器端的界面分别是由文件发送模块和文件接收模块组成。

客户端先调用connect()与服务器建立连接,然后用send()发送数据;

服务器端先调用listen()侦听客户端的连接请求,然后调用accept()对连接请求进行响应,如果需要接收数据,则会调用receive()接收。

2.软件设计思路

我设计实现的多线程文件传输系统主要包括两个大的部分:

服务器端和客户端。

其中服务器端开启服务,监听客户端的连接,然后如果有客户端开启,建立了连接以后,就可以由服务器端选择文件来进行发送传输。

在服务器端,因为是多线程传输,会有文件的分割,所以文件传输的时候可以选择较大的文件进行传输,客户端同时也是和服务器端一样用多线程进行连接和接收,同时客户端可以开启多个,并同时接收服务器传输的文件。

3.软件主要功能

本文件传输系统主要实现了服务器端和客户端的文件传输,并且采用多线程技术,有效地提高了文件传输的效率。

软件研究了Windows多线程编程技术,使用流式套接字来完成服务器端与客户端连接。

根据客户端对服务器端访问的特点,在服务器端采用异步方式监听客户端的连接请求,避免客户端长时间等待服务器端的回应出现卡死现象,更好的完成客户的文件传输需求,充分利用服务器端的系统资源。

2需求分析

这一部分主要对多线程文件传输系统需要实现的基本功能进行描述以及介绍了服务器和客户端进行通信的基本原理。

2.1功能模块描述

我设计实现的文件传输系统主要包括两个大的部分:

即传统的C/S模式,其中服务器端开启服务,监听客户端的连接,然后如果有客户端开启,建立了连接以后,就可以由服务器端选择文件来进行发送传输,首先是添加文件到服务器端,客户端接收文件时,点击接收是首先获取的是相关文件的地址信息,然后你双击保存文件到相关文件夹,这时候服务器就会调用相关线程进行传送。

服务器只能开启一个,并向客户端传送文件,客户端可以开启多个,并且可以同时接收服务器的文件,传送文件时,服务器可以实现对文件的分割,所以可以传送较大的文件。

系统不仅可以在同一台PC机上传输,同时可以在局域网内传输,体现了网络传输

的功能。

2.2软件需要实现的功能

这里就分别介绍了服务器和客户端需要完成的功能,其中由于文件只能从服务器发送到客户端,而不能从客户端发送到服务器,所以在文件传输时服务器只能发送文件而客户端只能接收文件。

2.2.1服务器端的应用程序将完成如下功能

——监听客户端的连接请求

——为请求连接的客户端建立SOCKET队列

——向客户端发送消息

——从客户端接收消息

——向客户端发送文件

2.2.2客户端的通信程序将完成如下功能

——建立与服务器的连接

——关闭与服务器的连接

——向服务器发送消息

——从服务器接收消息

——从服务器接收文件

2.3通信原理及过程

大多数通过网络进行通信的应用程序,不论是通过因特网还是小型的办公网络,它们都使用同样的原则和功能来执行通信。

计算机上的一个应用程序正在等待另一个程序打开通信连接,可以说这前一个应用程序正在“侦听”该连接请求,这很像你在等待某人给你打电话时,一直在留心电话铃声。

与时同时,另一个应用程序,一般是运行在另一台计算机上(当然也可以是同一台机器上),试图同第一个应用程序连接。

这种试图找开连接的方式就类似于向某人打电话。

你拨了电话号码,并希望要找的那个人正在电话线的另一头等接电话。

当然,要完成电话的呼叫,必须知道被呼叫方的电话号码。

同样的道理,试图连接到第一个应用程序的这个程序也必须知道第一个应用程序的网络位置或网络地址。

一旦两个应用程序建立了连接,它们之间就可以互相发送和接收消息。

正像两个人打电话交谈一样,这个连接是一个双向的通道,即双方都可以发送消息。

最后,如果一方或双方完成了对话,连接即关闭,就像打完电话一样,你能够知道电话中的对方是否把电话给挂断了,或者双方由于其它原因连接不上了。

一旦该应用程序同一

个应用程序之间建立了连接,就能够在它的对话框里键入要发送的文本消息,并把它们发送给另一个应用程序。

消息被发送之后,就被加到已发送消息的列表中。

接收到的每一条消息都被复制到所有已收到的消息列表中。

这样就能看到完整的已发送和已接收到的消息列表,还可以对发送消息的应用程序和接收消息的应用程序进行比较。

3主要实现技术

这一部分主要介绍实现本系统相关功能需要用到的核心技术,并对相关技术进行了具体的介绍。

3.1关键要点分析

文件传输的本质用一句话概括就是:

发送方将文件数据读出来,然后调用套接字的发送函数将数据传输到接收方,接收方调用套接字接收函数接收数据,然后重新建立文件并将数据写入文件。

TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。

TCP提供端到端通信;

采用字节流方式,如果字节流太长,将其分段;

提供紧急数据传送功能。

多线程可以同步完成多项任务,不是为了提高运行效率,而是为了通过提高资源使用效率来提高系统的效率。

线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行,也可以把它理解为代码运行的上下文。

线程负责在单个程序里执行多任务,通常由操作系统负责多个线程的调度和执行。

WINSOCK是在Windows进行网络通信编程的API接口,也是Windws网络编程的事实标准。

在网络编程中最常用的方案便是客户机/服务器模型。

WindowsSockets规范定义并记录了如何使用API与Internet协议族(IPS,通常我们指的是TCP/IP)连接,尤其要指出的是所有的WindowsSockets实现都支持流套接口和数据报套接口。

3.2数据传输协议以及选择TCP作为本系统的传输协议

1.TCP协议

TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。

TCP提供端到端、全双工通信;

TCP协议被称作一种端对端协议。

这是因为它为两台计算机之间的连接起了重要作用:

当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接、

发送和接收数据以及终止连接。

TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。

即使在Internet暂时出现堵塞的情况下,TCP也能够保证通信的可靠。

2.UDP协议

用户数据报协议(UDP)如下图所示,它为高层应用提供了IP的无连接特性分组传输通路,在不同计算机之间实现一条数据流。

如果检测到错误,分组将被丢弃,且不会执行进一步的动作。

UDP被称为“无连接”的,因为它不需要握手,在发生差错时也不需要重传数据。

基本上,UDP在IP上增加了端口寻址功能。

报头包括源端口和目的端口、长度字段(包括报头和数据的长度)和校验和,UDP中的校验和字段是可选的。

UDP虽然不如TCP可靠,却可以在网络上快速地发送大量的数据,因而可以用于广播。

它允许应用在任何时刻向任何地址发送报文。

因此,它通常用于多媒体应用,如实时的视频会议,流式音频和视频以及因特网电话。

所用这些应用可以容忍小部分的分组丢失,但UDP没有任何的拥堵控制措施。

分组在路由器上可能会发生溢出,从而带来严重的问题,但是,差错校验和序列编号等功能也可以加入到选用

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2