




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
07 级山西大同大学物电学院电子系毕业设计 1 本科毕业论文本科毕业论文( (设计设计) ) 题目: 基于 Visual C+6.0 的点对点文件传输实现 Design and Realization of Point-to-Point Files Transfer with Visual C+6.0 学院: 物理与电子技术学院 班级: 电子信息科学与技术(二)班 姓名: 吴明扬 指导教师: 甄海龙 完成日期:2011年5月16日 07 级山西大同大学物电学院电子系毕业设计 2 目录目录 摘摘 要要 .4 关键词关键词 4 ABSTRACTABSTRACT 4 KEYKEY WORDSWORDS .4 第一章第一章 绪论绪论 .6 1.1 选题背景 6 1.2 文件传输的主要方式 6 1.3 课题研究意义 7 第二章第二章 TCP/IPTCP/IP 技术与技术与 C/SC/S 模式模式.8 2.1 TCP/IP 技术8 2.1.1 TCP/IP 体系结构 8 2.1.2 TCP/IP 特点 9 2.1.3 TCP/IP 传送文件机制 .10 2.3 客户机/服务器模式 11 第三章第三章 WINSOCKWINSOCK 网络程序设计技术网络程序设计技术.12 3.1 WINSOCK简介 .12 3.2 WINSOCK通信机制 .12 3.3 WINSOCK编程模型 .14 3.3.1 建立一个 Socket .14 3.3.2 配置一个 Socket .15 3.3.3 使用 Socket .16 第四章 系统方案设计 17 4.1B/S 结构与 C/S 结构的选择 17 4.1.1 B/S 结构与 C/S 结构 17 4.1.2 C/S 模式的采用 18 4.2 文件传输协议的比较 .20 4.2.1 早期文件传输协议的研究比较20 4.2.2 HTTP 协议传输文件的方式 .20 4.2.3 FTP 文件传输协议的研究 22 4.3 建立新的利用套接字方式的通信协议 .22 第五章 系统详细设计 23 07 级山西大同大学物电学院电子系毕业设计 3 5.1 系统总体设计 .23 5.2 系统功能模块设计 .25 5.2.1 服务器模块25 5.2.2 客户端模块28 5.2.3 界面显示模块29 致谢 .33 参考文献 .34 07 级山西大同大学物电学院电子系毕业设计 4 基于 Visual C+6.0 的点对点文件传输实现 摘摘 要要:近年来,随着 Internet 的发展和普及,人们对网络传输的需求量越来 越大,远程教育、网络会议等众多新兴软件的产生,对大文件的传输问题提出了挑战。 传统的大文件传输通常在客户端建立一个较大的 Buffer 缓冲区,这样不仅会大量占用 系统资源,而且传输的速度十分缓慢,不能实时地显示传输进度。由于传输的时间比 较长,期间发生中断或计算机重启等意外的可能性非常高。 本文件传输系统的设计选用 VC+6.0 为开发工具,以 C/S 模式通过建立 Socket 连 接后实现局域网快速,准确,安全的点对点文件传输功能。本系统能够促进局域网内 用户之间的文件资源共享,满足主机之间信息交流,确保文件传输安全性,有效地提 高工作效率。 关键词关键词:套接字,网络编程,C/S 模式,TCP/IP Design and Realization of Point-to-Point Files Transfer with Visual C+6.0 Abstract:In recent years, with the development and popularization of Internet, there is a growing demand for network transmission. Distant education,web conference, and many other new softwares are come into being. It gives the large challenges to transmission of large files on the issues.Traditional files transfer is usually establish a larger buffer in the client, so that it will occupy many system resources and result very slow speed of files transfer, so it 07 级山西大同大学物电学院电子系毕业设计 5 also can not be displayed in the real-time transmission progress. Transfer files for long time may cause some accidents such as interrupting or restarting the computer. The system with the Visual C+6.0 establishs a socket connection in local area network based on C/S mode for a fast,exact and safe way to tansfer files of point-to-point. The system can contribute to share resources in the LAN, meet the demand of exchanging the information between the host, make sure it is safe to transfer files, improve the work efficiency in effect. Key words:Socket; Network Programming; C/S Model; TCP/IP 07 级山西大同大学物电学院电子系毕业设计 6 第一章第一章 绪论绪论 1.1 选题背景选题背景 在这个信息化时代,计算机网络技术的迅猛发展影响了几乎包括政治、文 化、生活、经济在内的每一个角落,推动了人类社会向信息化社会的逐步转变; 同时我们也应该清醒地认识到文件传输的问题是计算机网络发展过程中的一个 不容忽视的问题。在如今拥塞的网络上,各种数据在争夺着网络资源,如何使 传输的文件更加可靠的到达目的地,同时如何友好的解决文件分类分组高效传 输等问题都是需要有待提高和完善的地方。 1.2 文件传输的主要方式文件传输的主要方式 在网络环境下,文件传输方式主要有:文件传输协议方式(FTP) 、远程拷 贝方式(RCP) 、套接字方式(Socket) ,利用 HTTP 协议传输方式,利用标准 XMODEM 协议传输方式,利用 XMODEM CRC 协议传输方式,利用 XMODEM 1K 协议传输方式,利用 YMODEM ODME 批传输协议传输方式,利 用 YMODEM G 协议传输方式,利用 ZMODEM 批量传输协议传输方式,利用 Kemti 协议传输方式。 传统方式下,利用 FTP 协议进行文件传输最为普遍,这种方式的优点是适 用面广、使用简单、不需要用户编制额外的应用软件;其缺点是在广域网上传 输大文件时可靠性较低、不支持断点续传,因而对大文件和传输精度要求很高 的应用不适合。下面是 FTP 协议的发展历程: 1971 年,第一个 FTP 的 RFC(RFC 114)由 A.K.Bhushna 在 1971 年提出, 同时由 MIT 与 Harvard 实验实现。 1972 年,RFC 172 提供了主机间文件传输的一个用户级协议。 1973 年 2 月,在长期讨论(RFC 265,RFC 294,RFC 354,RFC 385,RFC 430)后,出现了一个官方文档 RFC 454。 1973 年 8 月,出现了一个修订后的新官方文档 RFC 542。确立了 FTP 的功 07 级山西大同大学物电学院电子系毕业设计 7 能、目标和基本模型;当时数据传输协议采用 NCP。 1980 年,由于底层协议从 NCP 改变为 TCP,RFC 765 定义采用 TCP 的 FTP。 1985 年,一个作用持续至今的官方文档 RFC 959(STD9)出台。 文件传送协议 FTP(FileTransferProtoeol)是 Internet 文件传送的基础,通 过该协议,用户可以从一个 Internet 主机向另一个 Internet 主机拷贝文件。FTP 曾经是 Internet 中的一种重要的交流形式。 利用 TCP 或者 UDP 提供的套接字直接服在务器和客户机之间进行文件传输 的优点是实现过程可以由应用程序开发者直接控制,因而灵活性很高,缺点是 编程复杂,可靠性完全依赖于应用程序开发者。 标准 XMODEM 协议是最早开发的文件传输协议,因而也是最常用的。由 于它历史悠久并被普遍采用,几乎所有的远程系统都支持标准 XMODEM 协议, 事实上,很多协议都是在它的基础上发展起来的,标准 XMODEM 协议用 128 字节/块来发送数据。 YODEM 批传输协议和 ZMODEM 协议支持文件的分组传输,而 YODEM G 协议具有校正功能。Kemrti 协议可以做许多调整,具有许多特性,因而常被 选作 IBM 大型机或者 DECVAX 系统的协议。 在文件(信息)的最优传输设计问题中,减少文件的传输时间(接通时间) , 对提高工作效率有重要的现实意义。目前常用于解决文件最优传输问题的优化 方法主要是寻找关键路径方法和贪婪算法,两类方法都是基于运筹学方法给出 的,计算规模大,很难得到问题的量化结果,所以文件传输的遗传优化算法随 之被提了出来。随着文件(信息)的最优传输设计方案设计的不断进步与完善, 网络中的中转设备,例如路由器等等。 1.3 课题研究意义课题研究意义 本课题的价值体现在通过本课题的研究,能够正确实现文件的传输功能, 和提高拿到一个项目对其分析的能力,这对今后的 IT 之路有重大影响。 07 级山西大同大学物电学院电子系毕业设计 8 第二章第二章 TCP/IP 技术与技术与 C/S 模式模式 2.1 TCP/IP 技术技术 TCP/IP 是 Transmission Control Protocol/Internet Protocol 的简写,中文译名 为传输控制协议/互联网协议,是当今世界上最广而不基于任何特定硬件平台的 网络通信协议。采用 TCP/IP 可以解决异种机联网和异种网互连的问题,并可以 访问当今世界上最有影响力的 Internet 网。TCP/IP 协议的基本思想是通过网间 连接层将各种不同的网络连接起来,在各个网络的底层协议之上构造一个虚拟 的大网,使用户与其他网的通讯就像与本网的主机通讯一样方便实现,这一思 想的相关协议有 TELNET、FTP、SMTP、TCP、UDP、IP、ICMP、ARP、RARP 等。 2.1.1 TCP/IP 体系结构体系结构 TCP/IP 协议实际上就是在物理网上的一组完整的网络协议。其中 TCP 是提 供传输层服务,而 IP 则是提供网络层服务。TCP/IP 包括以下协议(结构如图 2-1 所示): 07 级山西大同大学物电学院电子系毕业设计 9 IP: 网间协议(Internet Protocol) 负责主机间数据的路由和网络上数据的 存储。同时为 ICMP,TCP,UDP 提供分组发送服务。 ARP:地址解析协议(Address Resolution Protocol)此协议将网络地址映射 到硬件地址。 RARP:反向地址解析协议(Reverse Address Resolution Protocol)此协议将 硬件地址映射到网络地址。 ICMP:网间报文控制协议(Internet Control Message Protocol)此协议处理 信关和主机的差错和传送控制。 TCP:传送控制协议(Transmission Control Protocol)这是一种提供给用户 进程的可靠的全双工字节流面向连接的协议。 UDP:用户数据报协议(User Datagram Protocol)这是提供给用户进程的无 连接协议,用于传送数据而不执行正确性检查。 FTP:文件传输协议(File Transfer Protocol)允许用户以文件操作的方式 (文件的增、删、改、查、传送等)与另一主机相互通信。 SMTP:简单邮件传送协议(Simple Mail Transfer Protocol)SMTP 协议为系 07 级山西大同大学物电学院电子系毕业设计 10 统之间传送电子邮件。 TELNET:终端协议(Telnet Terminal Procotol)允许用户以虚终端方式访 问远程主机。 HTTP:超文本传输协议(Hypertext Transfer Procotol) 。是用于从 WWW 服 务器传输超文本到本地浏览器的传送协议。 TFTP:简单文件传输协议(Trivial File Transfer Protocol) 。它是 TCP/IP 协 议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复 杂、开销不大的文件传输服务。 2.1.2 TCP/IP 特点特点 TCP/IP 协议的核心部分是传输层协议(TCP、UDP) ,网络层协议(IP)和 物理接口层,这三层通常是在操作系统内核中实现3,因此用户一般不涉及。 用户服务要通过核外的应用程序才能实现,所以要使用套接字(Socket)来实 现,图 2-2 就是反映 TCP/IP 协议核心与应用程序的关系。 2.1.3 TCP/IP 传送文件机制传送文件机制 下面以采用 TCP/IP 协议传送文件为例,说明 TCP/IP 的工作原理,其工作 流程如下: (1)在源主机上,应用层将一串应用数据流传送给传输层。 (2)传输层将应用层的数据流截成分组,并加上 TCP 报头形成 TCP 段, 送交网络层。 07 级山西大同大学物电学院电子系毕业设计 11 (3)在网络层给 TCP 段加上包括源、目的主机 IP 地址的 IP 报头,生成 一个 IP 数据包,并将 IP 数据包送交链路层。 (4)链路层在其 MAC 帧的数据部分装上 IP 数据包,再加上源、目的主 机的 MAC 地址和帧头,并根据其目的 MAC 地址,将 MAC 帧发往目的主机或 IP 路由器。 (5)在目的主机,链路层将 MAC 帧的帧头去掉,并将 IP 数据包送交网 络层。 (6)网络层检查 IP 报头,如果报头中校验和与计算结果不一致,则丢弃 该 IP 数据包;若校验和与计算结果一致,则去掉 IP 报头,将 TCP 段送交传输 层。 (7)传输层检查顺序号,判断是否是正确的 TCP 分组,然后检查 TCP 报 头数据。若正确,则向源主机发确认信息;若不正确或丢包,则向源主机要求 重发信息。 (8)在目的主机,传输层去掉 TCP 报头,将排好顺序的分组组成应用数 据流送给应用程序。这样目的主机接收到的来自源主机的字节流,就像是直接 接收来自源主机的字节流一样。 2.3 客户机客户机/服务器模式服务器模式 20 世纪 90 年代以来,客户机/服务器(c1ient/sevrer)模式得到了十分迅速 的流行与发展。几乎每个新的网络操作系统和每个新的多用户数据库系统都声 称能够支持 C/S 模式。实现 C/S 模式允许有许多不同的策略。 从数据库管理系统的应用来看,在 LAN 上采用的 C/S 模式,即指在 LAN 中至少有一台数据库服务器(DBMSseryer) ,可以作为希望去存取公共数据库 的各台工作站的后援支持。把应用任务中的程序执行内容划分为两个部分:与数 据库存取有关的部分由 DBMSesvrer 承担,与应用的人机界面处理、输入/输出 或一部分应用的逻辑功能等有关的内容由 c1ient 端工作站承担7。这样做的好 处大致有: (1)充分调动在 LAN 中的 server 与 client 两方面的处理能力。 (2)极大的减少网络上的的信息流通量。 07 级山西大同大学物电学院电子系毕业设计 12 (3)有效的发挥了服务器软硬件执行效率高、集中管理数据库安全方面的 长处,也可以充分利用 PC 机 c1ient 端处理用户界面和本地 I/0 的优点。 (4)C/S 体系结构有可能提供一种开放式的、易于伸缩扩展的分布式计算 环境,并保护硬件等投资。 近年来已经普遍采用了三层方式的 C/S 模式,采用三层 C/S 模式的好处是: (1)可以更方便、更清晰地分工应用软件的设计任务。 (2)可以降低对客户机的要求,使客户机只需处理人机界面为主的工作, 适应日益扩展的应用需求。 (3)防止客户机上有权连接数据库的用户绕过系统中的客户端应用系统, 利用自行安装在客户机上的数据库访问工具非法访问某些未授权的数据,从而 保证了安全性(由功能服务器负责) 。 (4)避免了在客户机上分发应用程序与版本控制上的困难。对于文件传输 系统来说,采用客户机/服务器模式能够方便用户进行操作从而提高工作效率。 第三章第三章 Winsock 网络程序设计技术网络程序设计技术 3.1 Winsock 简介简介 为了方便网络编程,Microsoft 联合了其他几家公司共同制定了一套 WINDOWS 下的网络编程接口,即 Windows Sockets 规范,它不是一种网络协 议,而是一套开放的、支持多种协议的 Windows 下的网络编程接口。 Winsock 规范定义了一套可使网络程序开发人员在 Windows 下开发标准的 TCP/IP 网络程序接口,它不仅包含人们所熟悉的 Berkeley Socket 风格的库函数, 还包含了一组针对 Windows 的扩展库函数,以使程序员能充分地利用 Windows 消息驱动机制、异步网络事件选择方式进行编程。Winsock 规范定义并记录了 任何使用 API 与 Internet 通讯协议(ISP 通常指 TCP/IP)连接。应用程序使用 Windows Sockets 的 API,而 Windows Sockets 又利用下层的网络通信协议与操 作系统以产生实际的通信,它们之间的关系如下图 3-1 所示。 07 级山西大同大学物电学院电子系毕业设计 13 3.2 Winsock 通信机制通信机制 应用程序的网络通信归根结底是利用相同的通信协议来完成信息的传输, 应用程序和 Winsock 都工作在 Windows 的用户模式下,操作系统仅仅通过 Winsock 是不能完成网络间的通信4,还需要底层的支持,而套接字仿真器(套 接字核心模式驱动程序)和传输驱动程序接口(Transport Driver Interface,TDI)是负责操作系统核心态环境下的网络通信,起到了 Winsock 和 传输协议之间的通信桥梁作用。如图 3-2 所示,Winsock 是网络通信应用程序 于套接字仿真器间的接口,TDI 是套接字仿真器和传输协议间的接口套接字核 心模式,驱动程序复杂连接和缓冲区管理,以便向应用程序提供套接字仿真 (在 AFDSYS 文件中实现),同时负责与底层传输驱动程序对话传输驱动程序 接口(TDI)负责核心模式驱动程序与传输协议间的通信。 07 级山西大同大学物电学院电子系毕业设计 14 当应用程序利用 Winsock 发送和接受数据时,并不是由 Winsock 从网络上 发送和接收数据的,而是由核心模式驱动程序 AFDSYS 负责管理发送和接收缓 冲区来发送和接收数据6。也就是说,当应用程序调用 send 或 WSASend 函数 来发送数据时,AFDSYS 将把数据复制进他自己的发送缓冲区,然后 send 后 WSASend 函数立即返回 AFDSYS 在后台负责把数据发送出去,远程客户端接 收数据的情况也类似,由接收方的 AFDSYS 在后台负责把数据复制到自己的接 收缓冲区,然后当应用程序调用 recv 后 WSARecv 函数来接收数据时,把数据 由 AFDSYS 管理的接收缓冲区复制到应用程序提供的缓冲区中。 AFDSYS 管 理的发送缓冲区 SO-SNDBUF 和接收缓冲区 SO-RCVBUF 在缺省时两个缓冲区 的大小都为 8192 个字节,但可以根据实际要求由应用程序设定,由于我们传输 的对象可能是大数据量文件,因此需要对系统的发送缓冲区和接收缓冲区作相 应的设定,以保障大数据量的文件数据的发送和接收。 Sockets 的实质是通信端点的一种抽象,它提供一种发送和接受数据的机制。 根据通信性质不同可分为:Stream Sockets(流式套接字)和 Datagram Sockets(数据报套接字),如图 3-3 所示为这两种套接字的基本通信方式。其 中 Stream Sockets 提供无差错的、面向连接的、无长度限制的双向字节流传输, 适应于处理大量数据,尤其适合于 FTP 服务。Datagram Sockets 支持双向的数 据传输、但传输过程中不能保证可靠性和无差错性;本设计的程序设计中选择 Stream Sockets 来完成 C/S 模式的通信,保证能够数据准确、无误的传输。 07 级山西大同大学物电学院电子系毕业设计 15 3.3 Winsock 编程模型编程模型 3.3.1 建立一个建立一个 Socket 为了建立 Socket,程序调用 Socket 函数如下: Sockethandle=Socket(“协议簇”,“Socket 类型”,“协议”); Winsock 函数含有三个参数,“协议簇”参数指明像 TCP/IP 协议组这样的一 组相关协议,“Socket 类型”参数指明参数指明程序是进行数据报传输还是字节 流传输,“协议”参数定义了协议族内程序欲使用的具体协议(如 TCP 或 UDP)。 由于编程时必须指定程序使用的协议簇,因而能够为使用不同协议组和地 07 级山西大同大学物电学院电子系毕业设计 16 址格式的网络建立相同的接口。也就是说,本函数的正确调用可使 Winsock 接 口运行在多个网络上。下面语句显示了一个典型的具体 Winsock 函数调用: Sockethandle=Socket(PFINET,SOCKSTREAM,IPPROTO TCP); 这个 Winsock 使用 Internet 协议簇(PFINET)的 TCP 协议(IPPROTO TCP)进行字节流(SOCKSTREAM)通信。当程序调用 Winsock 函数建立 一个新 Socket 时,Winsock 将为一个内部数据结构分配内存,此结构中保存有 关此 Socket 的信息。 3.3.2 配置一个配置一个 Socket 程序可使用 Winsock 中不同的函数来配置一个 Socket。每个 Socket 需要五 种信息:本地和远地本机的 IP 地址、本地和远地进程的协议端口、连接使用的 协议。 面向连接的协议在连接端点之间建立一条虚电路,面向连接的客户程序不 必关心网络软件使用怎样的本地地址传输数据。建立好连接后,客户程序依靠 TCP 协议给它传送数据。因此面向连接的客户程序不需指明本地协议端口,它 提供给 Socket 的唯一地址信息是远地服务器信息(IP 地址和协议端口)。 Winsock 自动保存本地 IP 地址和选择本地协议端口,并确保客户程序收到传输 层送给本地协议端口的所有数据。也就是说,Winsock 为程序选择协议端口, 当数据到达此端口时通知程序,程序不必关心 Winsock 使用哪一个协议端口。 在前一步已建立的 Socket 基础上,面向连接的客户程序使用 connect 函数 来配置 Socket。 result=connect(“Socket 句柄”,“远地 Socket 地址”,“name 缓冲区的长度”) ; 此时,内部数据结构就包含了网络通信必须的五种信息。只有面向连接的 客户进程才启动与远地服务器 Socket 的直接连接。 无连接协议不建立与远地服务器的直接连接。使用无连接协议的客户程序 必须发送一个带有服务请求的数据报并等待应答,远地服务器的应答以数据报 的形式到达。Winsock 用 bind 函数给 Socket 指定一个本地 IP 地址和一个协议 端口,其典型调用如下: 07 级山西大同大学物电学院电子系毕业设计 17 result=bind(“Socket 句柄”,“本地 Socket 地址”,“本地 Socket 地址长度”) ; 服务器程序使用 bind 函数用 Winsock 登记一个协议端口,程序告诉 Winsock 监视哪一个协议端口的数据传送,Winsock 接着告诉传输层将此协议 端口收到的数据传送给 Winsock。 3.3.3 使用使用 Socket 配置好一个 Socket 后,程序就能够使用 Winsock 在网络上传送和接收数据 了。Winsock 有四个函数:两个用于数据传送(send、sendto),两个用于数据 接收(recv、recvfrom)。由于 send 和 recv 函数不能指定目的地址,只能用于 面向连接的 Socket,其典型调用过程为: result=send(“Socket 句柄”,“报文缓冲区”,“缓冲区长度”,“特殊标志”); Winsock 将从 Socket 句柄确定的内部 Socket 数据结构中获取目的地址信息, 接着 send 函数将传送报文缓冲区中的数据,这些数据将被传送到 Winsock 内部 Socket 数据结构中指明的网络地址中去。recv 函数与之相对应,其调用过程为: result=recv(“Socket 句柄”,“报文缓冲区”,“缓冲区长度”,“特殊标志”); 程序在无连接的 Socket 上使用 sendto 和 recvfrom 函数,其使用如下: result=sendto(“Socket 句柄”,“报文缓冲区”,“缓冲区长度”,“特殊标志”, “Socket 地址结构”,“地址结构长度”); result=recvfrom(“Socket 句柄”,“报文缓冲区”,“缓冲区长度”,“特殊标志” ,“Socket 地址结构”,“地址结构长度”); 07 级山西大同大学物电学院电子系毕业设计 18 第四章第四章 系统方案设计系统方案设计 本章对系统的总体方案进行了设计,比较了 C/S 模式和 B/S 模式的不同并 采用了 C/S 模式作为系统的整体结构模型,对多个文件传输协议进行了比较与 分析,最后确立采用基于 Socket 的新的专用文件传输协议来实现系统的具体要 求,具有较高的灵活性,软件开发方法采用面向对象软件开发方式,最后介绍 了系统的总体的设计流程。 4.1B/S 结构与结构与 C/S 结构的选择结构的选择 4.1.1 B/S 结构与结构与 C/S 结构结构 B/S 模式是一种以 Web 技术为基础的新型的系统平台模式18,它把传统 C/S 模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器 (Web 服务器) ,从而构成一个三层结构的客户服务器体系,它简化了客户端。 其次,它简化了系统的开发和维护。各个用户通过 HTTP 请求在权限范围内调 用 Wbe 服务器上不同处理程序,从而完成对数据的查询或修改。相对于 C/S,B/S 的维护具有更大的灵活性。另外,它使用户的操作变得更简单。C/S 模式的客户应用程序有自己特定的规格,使用者需要接受专门培训。而采用 B/S 模式时,客户端只是一个简单易用的浏览器软件,无论是决策层还是操作 层的人员都无需培训,就可以直接使用。 Internet/Intranet 采用的 B/S 计算模型实质上是一种扩展了的 C/S 模型。其 一端是 Web 客户,一端是 Web 服务器,二者通过 HTTP 协议通信。客户向服 务器发出服务请求,包括对数据库的数据请求,服务器响应客户请求并把响应 结果送给客户浏览器。使用浏览器(如 IE)与某一台主机或系统进行连接,并 不需要更换软件或再启动其它软件,所以用户的界面具有一致性,易于操作。 C/S 模式主要由客户应用程序、服务器管理程序和中间件三个部分组成。 首先,交互性强是 C/S 固有的一个优点。在 C/S 中,客户端有一套完整应用程 序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由 07 级山西大同大学物电学院电子系毕业设计 19 切换。其次,C/S 模式提供了更安全的存取模式。由于 C/S 在逻辑结构上比 B/S 少一层,对于相同的任务,C/S 完成的速度总比 B/S 处理速度快,使得 C/S 更 利于处理大量数据。 在系统平台模式时,要考虑到 B/S 模式的先进性,也要考虑到 C/S 模式的 成熟性,还可以根据系统自身的业务特点,采取 C/S 与 B/S 交叉并用的体系结 构。 4.1.2 C/S 模式的采用模式的采用 网络应用的最主要的模型是 Client/Server 模型,其实质是“请求驱动”。 Client/Server 模型最终可归结为一种“请求/应答”关系19。一个请求总是首先被 客户发出,然后服务器总是被动地接收请求,返回客户需要的结果。在客户发 出一个请求之前,服务进程一直处于休眠状态。一个客户提出请求后,服务进 程被“唤醒”并且为客户提供服务,对客户的请求作出所需要的应答。这一请求/ 应答相应的过程可以用图 4-1 来表示。 由于本系统需要支持分组文件的断点续传,需要向客户端提供比较完善的 功能,支持子程序的方便切换、支持新的应用层通信协议等等,而 B/S 模式与 C/S 相比不能在这些方面提供很好的支持,所以本系统采用了 Client/Server 模式, 同时也利用了 Client/Server 模型五个方面的特点: (1)是 Client/Server 模型最重要的特点是非对等相互作用,即客户与服务 器处于不平等的地位,服务器拥有客户所不具备的硬软件资源,客户和服务器 分别是服务的请求者和提供者。实际上,网络中各个机器的资源是不平等的, 07 级山西大同大学物电学院电子系毕业设计 20 网络的真正目的就是共享这些不均等的资源,Client/Server 模型的非对等相互作 用特点也正好体现和适应了客观现实中资源的不均等现象。 (2)关于技术性的,网络上不同主机进程间通信完全是异步的,通信时机 具有随机性,所以必须有一种为通信双方的数据交换提供同步的机制,而 Client/Serverr 模型对此机制提供了极好的支持。由于上述原因,Client/Server 模 型由 Sybase 公司首先提出并在实际中应用后,迅速获得了广泛的支持,事实上 己成为网络应用的标准模式。 (3)可以更方便、更清晰地分工应用软件的设计任务。 (4)可以降低对客户机的要求,使客户机只需处理人机界面为主的工作, 适应日益扩展的应用需求。 (5)防止客户机上有权连接数据库的用户绕过系统中的客户端应用系统, 利用自行安装在客户机上的数据库访问工具非法访问某些未授权的数据,从而 保证了安全性(由功能服务器负责) 。 4.2 文件传输协议的比较文件传输协议的比较 本系统能够支持文件分组上传并且同时能够处理文件在分组传输时网络发 生断线后的续传问题,而且很重要的一点是客户可以在客户端程序的界面上对 文件进行分组,这样一是可以方便用户的操作,二是可以更少的暴露服务器端 的内容从而保证服务器的安全。三是操作简单,容易实现。 4.2.1 早期文件传输协议的研究比较早期文件传输协议的研究比较 在上第一章里,我们曾经简单的列举了几种用于文件传输的协议,包括 XODME 等一些早一些开发的文件传输协议,其中虽然 YMODEM 传输协议支 持分组文件传输,从表面上看应该采用这种协议,但是由于以下两个原因而没 有采用,一是因为这个协议要指定一个目录,然后协议才能把目录下的所有文 件传送到服务器端,这样,如果用户要传输 10 组图片附带声音档的组文件,那 么就需要用户亲自建立 10 个文件夹,分 10 次传送出去,这样非常影响用户的 工作效率;假设文件被分组传输到了服务器端,由于协议中没有对分组文件的 管理支持,更谈不上发生断点时保证组文件关联上的完整性了,二是因为这个 07 级山西大同大学物电学院电子系毕业设计 21 协议诞生在 DOS 系统很流行的时候,所以这个协议对 DOS 软件比较合适,对 于现在运行在图形界面下的程序来说,如果采用这种协议来进行文件的分组传 输,则不能很好的发挥图形界面友好的特性,从而会使用户感觉很不方便。对 于文件传输协议 XMODEM CRC 协议,XMODEM 1K 协议,YMODEM G 协议, ZMODEM 协议,Kermit 协议,也存在相似的问题,所以本系统并没有采用它 们来作为文件传输所采用的通信协议。 4.2.2 HTTP 协议传输文件的方式协议传输文件的方式 HTTP 协议建立在请求/应答模型上,一个请求的程序(叫作客户)与一个 接收程序(叫作服务器)建立连接16。HTTP 协议中传输的数据称为实体 (Entity) ,它可能包含请求和响应资源的特定表示或解释。一个实体由实体首 部(Entity-HEAD)和实体主体(Entity-BODY)构成。在请求/响应模型中,客 户请求的形式是请求方法、统一资源标示符(URI)和协议版本号,后面紧跟 包含请求参数、客户信息,可能还有信息自身的内容等,服务器用一个状态响 应(包括它的协议版本号、成功或失败代码) ,后面紧跟包含服务器信息、实体 信息,可能还有信息的内容等。 HTTP/1.1 以及以后的版本的请求型消息(Reuqest Mesasge)中定义了多种 07 级山西大同大学物电学院电子系毕业设计 22 请求方法,其中 GTE、HEAD、PUT 方法可以用于文件传输。由于 HTTP 协议 支持下的文件传输只涉及到客户端程序设计,因而软件实现不依赖于其它应用 程序,只与具体的 WEB 服务器有关(如果 WEB 服务器遵循国际标准的话, HTTP 协议进行文件传输的客户程序将是完全独立的) 。以下是向服务器上载文 件为例说明其设计与实现。图 4-2 是服务器/客户机发送和接收信息的过程。 由于在本章第一节中已经采用 C/S 作为系统基本开发平台模式,而利用 HTTP 协议进行文件上传属于 B/S 范畴,况且在网站中已经实现了这种文件传 输方式,从而能够满足单个文件传输的需求,但是不能满足分组文件传输的需 求。 4.2.3 FTP 文件传输协议的研究文件传输协议的研究 在 Interent 上,FTP 是文件传输事实上的标准,它用来在不同主机之间传送 二进制、图形、ASCII 文本等各种类型的文件。FTP 有两种访问方式:用户 FTP 和匿名 FTP。前者指用户在 FTP 服务器上拥有帐号并允许用户访问允许访 问的文件;后者允许用户以“匿名”方式进入系统,即用户不需要在服务器上拥 有帐号就可以存取或传送文件。相对而言,后者因为给用户的自由度较大而使 用得较多。 FTP 的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介 质对用户透明和可靠高效地传送数据。虽然我们也可以手工使用它,但是它的 主要作用是供程序使用的。FTP 支持用户登录,提供用户名和可选的口令,可 以列出目录,并发送和接收文件。FTP 不仅支持用户交互式地传输文件,同时 也支持程序到程序的数据传输。数据可以是文本文件、编码后的数据,也可以 是应用程序。用户进程可以请求将一个文件从主机传输到用户的计算机上,也 可以在两台远程主机之间启动一个第三方传输。为了完成传输,FTP 使用两个 TCP 连接:控制命令和数据传输13。 FTP 使用 Telnet 协议作为其命令通道,利用 Telnet 的访问控制过程来进行 用户的身份认证。 07 级山西大同大学物电学院电子系毕业设计 23 4.3 建立新的利用套接字方式的通信协议建立新的利用套接字方式的通信协议 前面已经讨论过了 XMODEM 系列协议15,RCP 协议,Kermit 协议,以及 HTTP 协议没有被选定为本系统文件传输协议的原因。对于本系统没有选择 FTP 作为文件传输的协议,主要考虑到在 FTP 的服务命令中,包含有如删除文 件(DELE)命令,删除目录(RMD)命令,建立目录(MKD)命令等等,用 户可以使用这些命令来对服务器上特定的文件夹以及文件进行操作,这样的危 险性也是很大的,对服务器就存在一定威胁,另外本系统包括服务器端用户文 件夹的创建、管理、以及尺寸规整等,还要对数据库进行数据的读取、更新、 添加、删除等操作,这些就使得 FTP 协议在处理这些特殊要求时显得非常不合 适,也显得很不灵活,这样就确定建立新的文件通信协议,而协议的实现是基 于 Socket 套接字的,所以实现起来非常灵活,同时将必要的安全措施加入到协 议实现中,就会使文件传输过程更加可靠。 最重要的是 Socket 是面向客户/服务器模型而设计的,针对客户和服务器 程序提供不同的 Socket 系统调用。客户随机申请一个 Socket (相当于一个想 打电话的人可以在任何一台入网电话上拨号呼叫) ,系统为之分配一个 Socket 号;服务器拥有全局公认的 Socket ,任何客户都可以向它发出连接请求和信 息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码) 。从而很方 便的实现了两台主机的连接和通信。因此最后选定基于 Socket 套接字方式来实 现本设计。 07 级山西大同大学物电学院电子系毕业设计 24 第五章第五章 系统详细设计系统详细设计 5.1 系统总体设计系统总体设计 点对点文件传输系统的实现应包含服务器模块、客户端模块、界面显示模 块等几个部分,整个程序采用 VC+6.0 完成,通信部分采用 WINSOCK,主要 要能够实现文件的发送和接收。图 5-1(a)是一个成功的文件发送过程的时序图, 图 5-1(b)是一个成功的文件接收过程的时序图。 07 级山西大同大学物电学院电子系毕业设计 25 本软件采用面向连接的流式套接字,基于客户/服务器模型。为了使用方便, 将客户和服务器设计在同一个用户界面中,根据用户需要将程序设置成客户端或 者服务器端。程序工作时,首先由程序建立套接字连接,在连接的基础上,由重载 的 Socket 事件通知函数启动相应的任务。为了提高程序的反应速度,程序的文件 上传和文件下载任务由辅助线程启动。程序的调用时序图如下(图 5-2 所示): 07 级山西大同大学物电学院电子系毕业设计 26 5.2 系统功能模块设计系统功能模块设计 5.2.1 服务器模块服务器模块 (1)建立 Socket 在服务器端建立一个监听的 Socket,为此可以定义一个 CSocket 对象 serSock 调用 serSock.Create( )函数来建立这个监听的 Socket,并定义此 Socket 所使用的通信协议。此函数调用成功返回 TURE。失败则返回 FALSE(调用 GetLastError()可得知原因,所有 WinSocket 的函数都可以使用这个函数来获 取失败的原因) 。 函数原型: BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, LPCTSTR 07 级山西大同大学物电学院电子系毕业设计 27 lpszSocketAddress = NULL ); 参数:: nSocketPort:一个用在 Socket 上的已知的端口,若为 0 则是让 Windows Sockets 选择一个端口; nSocketType:Socket 的类型 (SOCK_STREAM、SOCK_DGRAM) ,默认为 SOCK_STREAM; IEvent:一个位掩码,指定一个网络事件组合,包括以下内容: FD_READ希望收到读的准备就绪的通知。 FD_WRITE希望收到写的准备就绪的通知。 FD_OOB希望收到不同道的信号到达的通知。 FD_ACCEPT希望收到正在连接的通知。 FD_CONNECT 希望收到连接完成的通知。 FD_CLOSE希望收到关闭套接字的通知。 默认时全选。 IpszSocketAddress:一个指向包含了连接 Socket 的网络地址的字符串的指针, 如“” 。 如果要建立的是遵从 TCP/IP 协议的 Socket,第二个参数 nSocketType 应为 SOCK_STREAM,如为 UDP(数据报)的 Socket,应为 SOCK_DGRAM。因此 本设计中 type 应为 SOCK_STREAM。 (2)绑定端口 接下来要为服务器端定义的这个监听的 Socket 指定一个地址及端口,这样 客户端才知道等会要连接哪一个地址的哪个端口,本来我们是要调用 Bind( )函 数的,但是我们在 Create( )中已经完成了这一步工作,所以就省去了。 函数原型: BOOL Bind( UINT nSocketPort, LPCTSTR IpszSocketAddress = NULL); 参数见“(1)建立 Socket”中的 Create()中的参数解释。 (3)监听 当服务器端的 Socket 对象绑定完成之后,服务器端必须建立一个监听的队 07 级山西大同大学物电学院电子系毕业设计 28 列来接收客户端的连接请求。Listen()函数使服务器端的 Socket 进入监听状 态,并设定可以建立的最大连接数(目前最大值限制为 5,最小值为 1) 。该函 数调用成功返回 TURE,否则返回 FALSE。 BOOL Listen(int nConnectionBacklog = 5) ; 参 数: nConnectionBacklog:最大连接个数; 服务器端的 Socket 调用完 listen()后,如果此时客户端调用 connect() 函数提出连接申请的话,Server 端必须再调用 accept() 函数,这样服务器端 和客户端才算正式完成通信程序的连接动作。 (3)服务器端接受客户端的连接请求 当 Client 提出连接请求时,为了使服务器端接受客户端的连接请求,就要 使用 accept() 函数,该函数新建一 Socket 与客户端的 Socket 相通,原先监 听之 Socket 继续进入监听状态,等待他人的连接要求。该函数调用成功返回 Ture,否则返回 FALSE。 函数原型: Virtual BOOL Accept(CAsyncSocket 参数: rConnectedSocket:一个新可用的连招的套接字的引用标识 IpSocketAddr:一个接收到连
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程爆破考试试题及答案
- 劳动力市场学试卷及答案
- 幕墙施工组织设计专家论证的
- 深远海养殖智能化水下养殖平台建设方案
- 大宗固废资源化利用技术方案
- 环境影响评价技术服务与生态建设规划合同
- 高难度离婚协议:财产分割、子女抚养及赡养费协议
- 医疗机构消毒清洁与卫生监督服务协议
- 教育培训机构股份简单转让与师资培训合同
- 房屋建筑施工技术方案及创新设计
- 动物药理课件
- 2022城市轨道交通列车驾驶员技能及素质要求第1部分:地铁、轻轨和单轨
- 蓝桥杯c语言历届试题及答案
- 金融风险管理习题第1-13章金融风险概述思考题-经济资本与风险调整绩效
- 2024-2025学年高一下学期时间管理主题班会课件
- 2024国家安全教育大学生读本题库
- 教师的校本研修课件
- 《万以内的加减法》课件
- 《国际贸易学(第四版)》第七章-关税措施
- DB11-T 1891-2021 建(构)筑物与应急设施地震安全韧性建设指南
- 学生作文稿纸(A4打印)
评论
0/150
提交评论