(强烈推荐)多线程网络文件传输系统的设计与实现_毕业论文设计

(此文档为word格式,下载后您可任意编辑修改!) 毕业设计(论文)

题目多线程网络文件传

输系统的设计与实现

学生姓名学号

专业班级

指导教师

评阅教师

完成日期2013 年5月15日

学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。

作者签名:年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

本学位论文属于

1、保密□,在_________年解密后适用本授权书。

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.8W i n d o w s s o c k e t编程 (16)

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

4系统概要设计与实现 (20)

4.1通信过程..............................................................................21 4.2S O C K E T建立连接过程 (21)

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

2 3 5系统功能的演示 (25)

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

5.2文件传输的演示 (26)

6总结与展望...........................................................................28 6.1本文完成的主要工作 (28)

6.2未来研究展望 (28)

致谢…………………………………………………………………

(29)

参考文献 (30)

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

学生:

指导教师:

摘要:文件传输是因特网上最常用的服务之一,多线程文件传输能有效地提高文件传输的速度和效率,本系统采用windows socket实现,套接字可以看成是两个网络应用程序进行通信时,各自通信连接中的一个端点。系统分客户端软件和服务器端软件两部分,同时需要用到多线程相关知识,一个应用程序可以同时有多个线程一起运用CPU的资源,大大的加强对CPU的利用率,同时也从另一个方面加快了传输的速度。由于TCPIP连接协议的服务是设计客户端服务器应用程序时的主流标准,所以本软件主要采用TCPIP协议的网络通信技术;客户端,服务器类是从CAsyncSocket类中继承来的,因此本软件通信完全是异步的;程序在Windows XP系统、Visual C++6.0下编译通过,且运行良好。关键词:文件传输套接字多线程

Abstract:File transfer is one of the most commonly used services on the Internet, a multi-threaded file transfer can effectively improve the file transfer speed and efficiency, this system use the Windows sockets implementation, Socket can be regarded as two network applications for communications, each an endpoint of communication.Client software

and server software system points two parts, the need to use multithreading knowledge at the same time, an application can the CPU utilization, but also from another aspect to speed up the transmission speed.As TCPIP agreement linking the service is designed client server application procedures for the mainstream standards, Therefore, the software used mainly TCPIP agreement network communication technology; client, server from CAsyncSocket inherited category, and therefore the software is completely asynchronous communi- cation; procedures in Windows XP system and under Visual C + + 6.0 compiler,and Running well

Keywords:The file transfer The socket multithreading

前言

如今随着计算机应用的普及,已经有越来越多的人正在Internet (国际互联网)上畅游,许多人也已经将进入Internet作为下一个计算机升级的目标,而使用Internet进行文件传输,则是计算机联入Internet的一个重要功能之一。下面我们详细地谈一谈如何使用Internet的FTP功能进行文件传输。

FTP中文意思为文件传输协议,用于管理计算机之间的文件传送。一般说来,我们联网的主要目的就是实现信息共享,而文件传输则是计算机间实现信息共享的一个非常重要的内容之一。在Internet上早期实现文件传输并不是一件很容易的事,因为Internet是一个非常复杂的计算机环境,有个人电脑、工作站、MAC、服务器、还有大型机等。据统计目前连接在Internet上的计算机已经有四千多万台,并且每年正在以20%的速度增长。而这些连接在网上的计算机也在各自运行着不同的操作系统,有运行Windows、Dos的个人电脑,有运行MacOS的苹果机,也有运行unix的服务器等,而各种操作系统的文件结构也各不相同。要解决这种异种机、异种操作系统之间的文件传输交流问题,需要建立一个统一的文件传输协议,这就是FTP。基于不同的计算机操作系统,就有不同的FTP应用程序,而所有的这些应用程序都遵守同一种协议,这样我们就可以把自己的文件传送给别人,或者从其他的计算机用户中获得文件。因此文件传输通常就是指计算机利用Internet进行

文件传输的服务。FTP允许您从数以千计的远程主机上把文件传输到您的主机上,您可以传输计算机程序、图像、声音、电影或其它任何文件。 FTP用于Internet上的控制文件的双向传输。在实现的层面上,FTP 又可理解为一个可用于文件传输的客户机服务器系统(CS架构),该系统包括客户机端程序和服务器端程序,客户端和服务器端通信规则为FTP协议。用户通过客户机程序向服务器程序发出命令请求,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。比如说,用户发出一条命令,要求服务器向用户传送某一个文件的一份拷贝,服务器会响应这条命令,将指定文件送至用户的机器上。客户机程序接收到这个文件,将其存放在用户目录中。在通信协议的分层模型中,文件传输协议是在TCP(Transmission control Protocol,传输控制协议)之上的一个应用层协议,应用程序之间的通信需要用到传输层提供的字节流透明无误传输服务。Windows操作系统具有TCPIP协议栈,应用程序可通过Winsock API函数的调用实现端到端透明数据链接的建立。

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

信问题。在网络中为了标识通信的进程,首先要标识网络中进程所在的主机,其次要标识主机用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.学会利用windows socket进行高性能开发

本系统采用windows socket实现,windows socket是因特网上进

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

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

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

1.2 国内外研究现状

目前,国内外企事业单位对文件传输系统的认识和使用情况并不好,各企事业单位大多在局域网内实现文件传输,资源共享方面还存在较多缺陷,对相关技术的理论研究也不够深入。由于文件传输系统的复杂性、多变性、安全性低等特点,使得其发展还不

够成熟。随着科学技术的发展,各种以局域网或是广域网为基础的文件传输系统已经进入稳健发展时期。而计算机网络通信技术已趋于成熟,促使应用于文件传输的软件种类不断增多。由于网络编程技术的发展,人们使用的文件传输软件也表现出更多的高性能、易操作、稳定好等特点,但是开发者在注重下载功能实现的同时,往往忽略了用户上传文件的需要。

在国外,用户使用的传输软件主要有网络蚂蚁(NetAnt)和网际快车(FlashGet)。这些软件大都是针对用户下载来设计的,能够实现功能完善的下载服务。在国内,用户使用的文件传输软件主要是迅雷和飞鸽传书。迅雷主要针对的是文件快速下载的实现,而飞鸽传书则主要应用于局域网中的文件共享。目前常用的文件传输软件往往功能比较单一,也缺乏良好的用户使用界面和方便快捷的服务。许多软件在断点续传、多线程传输、进度显示以及文件的动态压缩等方面还存有欠缺。

随着企事业单位资源管理的规范化和规模的不断扩大,计算机的资源管理以及办公文档的发布和传递将不仅仅停留在依靠硬件或者电子邮件的获取上,而是会向着更全面、更可靠、更快捷的方向发展。过去,企事业单位往往将文件传输系统与OA系统结合在一起并将其作为OA系统的一个模块来处理。对于文档传输模块的设计,通常都是为办公文档管理而设计,并不能考虑到一些特殊文档的管理情况,例如多个文档同时传输的高效存储访问的问题等。

综上所述,目前的文件传输系统在文件多线程传输的实现上还不是很完善,虽然可供用户选择的文件传输软件种类繁多,但仍然存在质量

良莠不齐、功能各有异同的问题,用户在使用的时候也总会遇到诸多的不便,需要对一些技术做进一步的改进和提高,对于那些经常需要同时传输多个文件的特殊行业和生产领域,更加需要有针对性的进行改善。

1.3 本文研究内容

1.软件设计原理

本软件是在Windows操作系统下,Visual C++ 6.0环境下借用WinSock控件实现的,是基于TCPIP协议的CS模式,在服务器端和客户端分别以socket为中心进行编程,客户端和服务器端的界面分别是由文件发送模块和文件接收模块组成。客户端先调用connect()与服务器建立连接,然后用send()发送数据;服务器端先调用listen()侦听客户端的连接请求,然后调用accept()对连接请求进行响应,如果需要接收数据,则会调用receive()接收。

2.软件设计思路

我设计实现的多线程文件传输系统主要包括两个大的部分:服务器端和客户端。其中服务器端开启服务,监听客户端的连接,然后如果有客户端开启,建立了连接以后,就可以由服务器端选择文件来进行发送传输。在服务器端,因为是多线程传输,会有文件的分割,所以文件传输的时候可以选择较大的文件进行传输,客户端同时也是和服务器端一样用多线程进行连接和接收,同时客户端可以开启多个,并同时接收服务器传输的文件。

3.软件主要功能

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

软件研究了Windows多线程编程技术,使用流式套接字来完成服务器端与客户端连接。根据客户端对服务器端访问的特点,在服务器端采用异步方式监听客户端的连接请求,避免客户端长时间等待服务器端的回应出现卡死现象,更好的完成客户的文件传输需求,充分利用服务器端的系统资源。

2 需求分析

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

2.1 功能模块描述

我设计实现的文件传输系统主要包括两个大的部分:服务器端和客户端。即传统的CS模式,其中服务器端开启服务,监听客户端的连接,

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

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

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

相关文档
最新文档