毕业设计(论文)-基于局域网的文件传输系统的设计与实现.doc

上传人:椰子壳 文档编号:3284076 上传时间:2019-08-08 格式:DOC 页数:18 大小:193.52KB
返回 下载 相关 举报
毕业设计(论文)-基于局域网的文件传输系统的设计与实现.doc_第1页
第1页 / 共18页
毕业设计(论文)-基于局域网的文件传输系统的设计与实现.doc_第2页
第2页 / 共18页
毕业设计(论文)-基于局域网的文件传输系统的设计与实现.doc_第3页
第3页 / 共18页
毕业设计(论文)-基于局域网的文件传输系统的设计与实现.doc_第4页
第4页 / 共18页
毕业设计(论文)-基于局域网的文件传输系统的设计与实现.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《毕业设计(论文)-基于局域网的文件传输系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)-基于局域网的文件传输系统的设计与实现.doc(18页珍藏版)》请在三一文库上搜索。

1、基于局域网的文件传输系统的设计与实现基于局域网的文件传输系统的设计与实现 摘摘 要要 随着互联网技术的迅猛发展,计算机通信给人类文明带来了翻天覆地的变 化。很多情况下,人们的日常工作需要借助文件传输来完成。但大多数文件传 输功能都需要借助移动磁盘等硬件设备或 Internet 上的服务器才能实现。这就 给那些具有大规模内部网络的用户造成了许多问题,如浪费资金、浪费网络资 源、病毒入侵、降低了工作效率等。为了方便局域网内主机的资源共享,需要 开发一个基于局域网的文件传输工具,在内部网络中实现文件交换。 基于局域网的文件传输系统的设计选用 Delphi 为开发工具,以 C/S 模式 通过建立 So

2、cket 连接后实现局域网快速,准确,安全的点对点文件以及文件夹 传输功能。本系统能够促进局域网内用户之间的文件资源共享,满足主机之间 信息交流,确保文件及文件夹传输安全性,有效地提高工作效率。 设计共分为五大模块,分别为:一、介绍选题背景及意义和国内外研究现 状;二、介绍 TCP/IP 点对点协议技术,C/S 架构的 Delphi 程序设计技术和 Socket 网络编程技术;三、对当前局域网文件传输进行需求分析并提出解决方 案;四、根据解决方案对系统进行设计;五、对基于局域网的文件传输系统进 行测试并得到测试结果。 关键词:关键词:C/S 结构;网络通讯组件;点对点;Socket 连接 Th

3、e Design and Implementation of File Transfer System Based on LAN Abstract Along with the Internet technology swift and violent development, the computer correspondence the human culture has brought the earth-shaking change for. In very many situations, peoples routine work needs to draw support from

4、 the file transfer to complete. But the majority file transfer function all needs to draw support moves hardware equipment or the Internet and so in the floppy disk server can realize This gave these to have the large-scale internal network user to create many problems, like the waste fund, the wast

5、e network resources, the viral invasion, reduced the working efficiency and so on. In order to facilitate in the local area network main engine resources sharing, needs to develop one based on the local area network file transfer tool, realizes the document exchange in internal network. The design a

6、nd implementation of file transfer system base on LAN uses Delphi development tool,C/S mode through the establishment of Socket after connecting LAN users fast, accurate, the point-to-point security files and folders transmission functions. The system can contribute to LAN users to share file resour

7、ces to meet the exchange of information between mainframe, ensure that the filets and folders transmission security, effectively improving efficiency. The design is divided into five major module altogether, including: First, introduction selected topic background and significance and domestic and f

8、oreign research present situation; Second, introduces the TCP/IP point to point protocol technology, C/S overhead construction Delphi programming technique and the Socket network programming technology; Third, carries on the demand to the current local area network file transfer to analyze and to pr

9、opose the solution; Fourth, carries on the design according to the solution to the system; Fifth, to carries on based on the local area network file transfer system tests and obtains the test result. Key words: C/S structure; Network communication module; Point-to-point; Socket connection. 目目 录录 论文总

10、页数:26 页 1引言1 1.1选题背景1 1.2国内外研究现状1 1.3课题研究的意义1 2理论基础2 2.1TCP/IP 点对点协议技术 .2 2.2C/S 架构的 DELPHI 程序设计技术 .2 2.3SOCKET 网络程序设计技术 .3 3系统需求分析4 3.1现行业务系统描述4 3.2现行系统存在的主要问题分析4 3.3提出解决方案4 4系统设计5 4.1系统总体架构5 4.2系统界面设计6 4.2.1界面设计6 4.2.2用户信息7 4.3系统功能模块设计9 4.3.1获取用户信息9 4.3.2局域网内文件传输.13 4.3.3局域网内文件夹传输.17 5系统实施及测试.22 5

11、.1实施概况.22 5.2测试方案.22 5.3测试结果.23 参考文献.24 致 谢.25 声 明.26 第 1 页 共 26 页 1 1引言引言 1.11.1 选题背景选题背景 当今世界科学技术飞速发展,尤其以计算机通信网络为代表的互联网技术 更是日新月异,令人眼花燎乱,目不睱接。在计算机与网络迅速发展的今天, 借助于网络进行信息资源交流给人们带来了极大的方便。各种文件传输系统都 已被广大用户接受。比如 QQ、UC、Internet 邮件等互联网中运用最为广泛的文 件传输工具,但它们之间的文件传输往往对远程服务器有非常大的依赖性,没 有彻底实现点对点安全的文件传输。甚至需要花费大量的金钱购

12、买各种移动磁 盘或者其他局域网内连接主机的硬件设备。而达到的效果却总是因为传输效率 以及安全威胁而受到很大的限制。在这种形势下,开发一个功能简单而实用, 能在 Windows 操作系统中运行,并且具有可移植性的局域网内文件传输工具势 在必行。 1.21.2 国内外研究现状国内外研究现状 目前,国内外企业对局域网的文件传输系统认识和使用情况并不好,各个 企业单位在局域网内实现文件传输,资源共享还有很大的缺陷。技术无论是从 理论上或实践上都还不够完善。文件传输系统由于比较复杂,可变因素较多, 安全性低,因此发展还不成熟。 但是随着科学技术的发展,各种以局域网为单位的文件传输系统已经进入 稳健发展期

13、,比如说市面上比较普遍使用的 QQ、UC、飞鸽传书等以内部网络为 中心的资源共享系统也即将进入高速发展期。在国内,随着企业资源管理的规 范化和规模的不断扩大,企业的计算机资源管理将不仅仅停留在依靠硬件或者 Internet 网络获取,而且将会向着安全的内部网络化资源管理方式迈进。 1.31.3 课题研究的意义课题研究的意义 随着网络通信技术的发展与用户需求日益多样化,现代局域网络正处在变 革与发展之中,本课题的主要目的之一是为了更清晰地培养学生掌握科学研究 方法的能力和使学生迅速体会文件传输系统的研发过程。基于局域网的文件传 输系统能够让家庭网络以及各个企业等局域网对内部资料有一个快捷,准确,

14、安 全的共享。特别是对如今较大系统研发的模块分工合作得到了绝对保密性,从 而使各项工作有计划、更科学的进行及顺利完成,使企业的办事效率得到显著 提高。文件传输系统主要功能是自动获取局域网内用户的主机名,IP 地址以及 工作组名字,最终以 C/S 模式通过 TCP/IP 协议实现点到点文件传输功能。 本系统既锻炼了我们的实际动手能力,使我们将大学四年所学的理论知识 与实际开发相结合,又引导我们进行了一次模拟实际产品的开发,对于我们以 后工作能力的培养具有重要的意义。 第 2 页 共 26 页 2 2理论基础理论基础 2.12.1 TCP/IPTCP/IP 点对点协议技术点对点协议技术 系统的文件

15、传输功能主要依赖于建立客户端与服务器之间点对点的的连接 后实现。所以就得与TCP/IP协议协合。TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议, 这个协议是Internet国际互联网络的基础。TCP/IP是网络中使用的基本通信协 议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP), 但TCP/IP实际上是一组协议,只是TCP协议处于运输层,它能够确保文件准确的 传送;而IP协议处于网络层,它标识了处于网络中任意主机的唯一身份。TCP协 议和IP协议是保证

16、数据完整传输的两个基本的重要协议。通常说TCP/IP是 Internet协议族,而不单单是TCP和IP。 采用TCP/IP详解的原因: 第一,局域网内主机之间的是依靠IP地址进行标识。本设计要实现文件及 文件夹的传输就需要以IP地址为传送基础进行; 第二,新用户上线后需要向局域网内所有用户广播自己的主机信息使网内 主机得到本机的IP地址等。需要用到与TCP/IP相对的UDP协议。 2.22.2 C/SC/S 架构的架构的 DELPHIDELPHI 程序设计技术程序设计技术 本系统的开发主要采用 C/S 结构。所谓 C/S (Client/Server)结构,即 大家熟知的客户机和服务器结构。它

17、是软件系统体系结构,通过它可以充分利 用两端硬件环境的优势,将信息交互任务合理分配到 Client 端和 Server 端来 实现,降低了系统文件传输过程中的开销。目前大多数应用软件系统都是 Client/Server 形式的两层结构。传统的 CS 体系结构虽然采用的是开放模式, 但这只是系统开发一级的开放性,在特定的应用中无论是 Client 端还是 Server 端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境, C/S 结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品 的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。 第 3 页 共 26 页 R

18、equest Response Request Response Request Response . . . . Request . Response 图 1 客户机/服务器通讯结构 文件传输系统同时采用了 Delphi 网络组件编程技术。Delphi 是美国 BORLAND 公司推出的功能强大的应用程序开发工具。它具有简单、高效、功能 强大的特点。它可是众多程序员至爱的编程工具。Delphi 具有很多特性:基于 窗体和面向对象的方法,高速的编译器,与 Windows 编程紧密结合,强大而成 熟的组件技术。而且其重要的还有 Object Pascal 语言,它是一切的根本。 Object P

19、ascal 语言是在 Pascal 语言的基础上发展起来的,简单易学。Delphi 提供了各种开发工具,包括集成环境、图像编辑(Image Editor) ,以及各种开 发可视化软件的应用程序,如 DesktopDataBase Expert 等。除此之外,还允许 用户挂接其它的应用程序开发工具,如 Borland 公司的资源编辑器(Resourse Workshop) 。DELPHI 是可视化应用编程开发环境,可重用性面向对象编程语言, 快速编译器能够有效快速建立 WINDOWS 应用程序,快速简化 WINDOWS 与浏览器 客户,WEB 服务器以及中间件等开发之外,同时也支持基于 WEB

20、服务的 Microsoft,.net, Sun one 体系,而且提供给 WEB 开发者需要的可伸缩性和 可靠性。用户可以开发支持 WEB 服务特性的服务器端和客户端应用,而这一切 都是通过一套高度集成的可视化开发工具,先进的编译技术和可重用的组件完 成。 2.32.3 SOCKETSOCKET 网络程序设计技术网络程序设计技术 文件传输系统得以实现的根本在于建立有效的连接以及是否存在文件传输 载体。所谓 Socket 通常也称作“套接字“,用于描述 IP 地址和端口,socket 类 表现了客户端套接字,它是属于两台计算机的两个 TCP 通讯端口之间的通讯通 道。在网络编程中,客户端使用 S

21、ocket 对网络上某一个服务器的某一个端口发 服务器主机 客户机 A 客户机 B 客户机 C 客户机 N 第 4 页 共 26 页 出连接请求,一旦连接成功,打开会话;会话完成后,关闭 Socket。客户端不 需要指定打开的端口。服务器使用 Socket 监听指定的端口,端口可以随意指定, 等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。 3 3系统需求分析系统需求分析 3.13.1 现行业务系统描述现行业务系统描述 目前各种文件资源交流的主要方式可以分为三种:(1)通过局域网内主机 之间以文件共享后再经过复制,粘贴方式实现。 (2)依靠可移动磁盘的两次信 息转移实现。 (3

22、)通过 Internet 邮件方式实现。此三种方法并非不可行,但它 们都需要花费较长的时间以及安全性也得不到保证,工作效率将在很大程度上 受到限制。 如果通过局域网内主机之间复制粘贴来实现文件资源共享,将浪费大量的 网络带宽,极大程度上影响了网内用户的工作效率,甚至导致用户不能正常工 作;如果依靠移动磁盘实现文件的共享,将花费大量的金钱,而文件较大移动 磁盘容量不足的情况下会令人极为头疼,何况移动磁盘是病毒传播的重要途径; 如果通过 Internet 邮件方式实现,用户需要接入 Internet 服务器,这种方式 对远程服务器有非常大的依赖性,即使 1KB 的文件都要经历极度繁琐的路径, 不能

23、彻底实现点对点的即时交流,文件较大的情况下就不言而喻了。最重要的 是,在如今病毒黑客横行的网络世界中,信息的安全性也得不到保证。 综上所述,依靠 Internet 网络等方式实现文件资源交互的准确性,快速 性及安全性远达不到理想的要求。 3.23.2 现行系统存在的主要问题分析现行系统存在的主要问题分析 针对企业来说,提高工作效率是企业的一个重心;降低成本是企业赢取最 大利益的重要方式;保证信息安全却是可能影响企业生死存亡的关键。企业需 要对各种因素有足够深刻的认识才可能实现最终目标-盈利。而传统的文件资 源交互方式却存在很多的问题,大致可以分为:一、不能有效地降低文件交互 成本;二、文件交换

24、过程过于繁琐;三、内部机密资料得不到安全保证;四、 文件交互的准确性得不到更本保证。 3.33.3 提出解决方案提出解决方案 解决当前问题的方案主要是指在允许的成本、性能要求下,分析系统实施 的可行性,提出功能实现的依据,包括其简单性,安全性以及经济可行性。根 据企业简单快速,安全的资源共享等要求,提出以下四种解决方案: 1)操作简单性方案:开发的系统需要有以下特点:Windows 友好的用户界 面和系统快速的应用方法,简单易操作,不需对使用人员进行培训,可以使用 户很好的掌握。对传输文件过程中的文件的载入设置都是非常简单可行,比如: 第 5 页 共 26 页 如果用户忘记选择文件接收者的时候

25、系统会自动提示“请选择接收用户”要求 用户选择主机而不导致错误出现而引发的不便,这样就大大提高工作效率。而 且开发的系统应该简单易操作,易维护,减少了不必要的麻烦。对于家庭局域 网以及一些比较简单的中小企业网,系统必须做到在实际应用中较为成功。系 统应为用户提供 Windows 所一贯坚持的非常友好、操作简单的用户界面。 2)传输安全性方案:系统开发完成后,能有效地使内部资源与外网的完全 隔离,从而保证了内部机密文件的安全性。 3)经济可行性方案:系统开发完成必须作到提高文件共享效率,不管是在 资金上还是效率上都能达到预期的效果的。最重要的一点就是:使用户避免花 费高额的资金去购买各种移动磁盘

26、甚至是通过 Internet 邮件方式,使得用户方 便的同时,也让信息少走了不少“弯路” 。 4)快速准确性方案:鉴于系统的目标要求和特点,能够保证快速准确地实 现文件共享。 综合上述,本设计在 Windows XP 操作系统下,以中文版 Delphi7 为开发工 具,以 C/S 为系统功能结构,基于点对点的 TCP/IP 协议理论,通过 Socket 套 节字连接客户端与服务器实现文件及文件夹传输。彻底避免了文件交换过程与 外部网络的接触,实现快速的文件资源共享。并能够确保内部文件的机密性, 能够在很大程度上有效地提高工作效率。 4 4系统设计系统设计 4.14.1 系统总体架构系统总体架构

27、 本系统的设计过程主要分为两部分: 第一部分:系统界面的设计以及获取局域网内所有在线用户的主机名,IP 地址以及工作组名。使网内所有用户都能够获取其他用户信息。 第二部分:文件传输是本设计功能实现的核心。系统采用 C/S 架构将系统 运行载体分为两个部分:客户端与服务器端。文件传输需要建立有效的连接后, 通过 TCP/IP 协议实现点对点的文件传输。通信双方是通过三次握手建立 Socket 连接,实现文件传输,最后关闭套节字连接。文件传输的整个流程图如 下: 第 6 页 共 26 页 TCP/IP 3 次握手 SOCKET 流 三次握手 图 2 文件传输系统框架图 4.24.2 系统界面设计系

28、统界面设计 4.2.1界面设计界面设计 界面是系统功能得以实现的基本平台,这里充分利用 Delphi 可视化开发环 境以各种组件设置。界面的设计可以分为五步: 1)创建一个工程,制作一个窗体 form1; 2)在 form1 内加入用户列表 userlist 并设置列表项:用户名,工作组, IP 地址以及它们的属性; 3)在 form1 内加入 Memo1; 4)在 Memo1 内加入各种 DELPHI 网络通讯控件,本系统用到的控件分别有: a. 用于传送文件是打开文件的控件 OpenDialog1; b. 用于接收端保存文件的控件 SaveDialog1; c. 用于点到点文件传输的客户端

29、 PClientConnected 及服务器端 PServerAfterCommandHandler; d. 用于广播主机信息的客户端 ClientStatus 和服务器端 ServerStatus 数 据报组件; e. 用于设置退出系统和窗口前端显示的 PopupMenu1 菜单; 5)分别创建刷新按钮 BitBtn1,文件传输 BitBtn2 以及文件夹传输 BitBtn3 按钮。 客户端主机服务器端主机 套节字连接请 求 连接响应 写入文件流 接收文件流 并保存 断开连接断开连接响应 第 7 页 共 26 页 设置的界面如下图: 图 3 基于局域网的文件传输系统界面 4.2.2用户信息用

30、户信息 用户列表建立以后,将局域网内所有在线用户的主机名,主机 IP 地址以及 工作组名显示于列表中。方法是首先确定用户主机是上线信息,返回信息,握 手信息还是离线信息。这里对他们分别设置了一个信息发送的头信息,分别设 置为:LOGIN,HAND 以及 LOGOUT。如果新用户上线,它就向局域网以 LOGIN 为 头信息广播本机的主机名,IP 地址以及工作组。局域网内所有在线主机收到该 广播信息以后将新上线的主机名,端口,IP 地址以及工作组信息添加到自己的 在线用户列表并都以 HAND 为头信息向局域网广播本机的握手信息;当包括刚上 线主机在内的局域网所有主机收到这个握手信息以后线判断自己的

31、在线用户列 表中是否存在这个主机广播的主机信息,如果不存在就说明它是刚上线主机, 最后将这个信息添加到自己在线列表,否则就不加;当用户下线的时候也将自 己的信息以 LOGOUT 为头信息广播给局域网,其他在线用户收到这个消息以后将 其主机信息从本地在线用户列表删除。其部分的源代码分别如下: 第 8 页 共 26 页 procedure TForm1.FormCreate(Sender: TObject); /新用户上线 以 LOGIN 为头信息 var wsadata:twsadata; myinfobuf:array01023of char; /本机信息 pmyname:array01023

32、of char; /本机名 wList,clist: TStringList ; i,j:integer; begin mainhide; /把程序图标显示在系统托盘里边 if wsastartup($101,wsadata) NO_ERROR Then Exit; /执行失败 While True Do/列举指定工作组的网络资源 Begin Count := $FFFFFFFF;/不限资源数目 BufSize := 8192;/缓冲区大小设置为 8K GetMem(Buf, BufSize);/申请内存,用于获取工作组信息 /获取计算机名称 Res := WNetEnumResource(l

33、phEnum, Count, Pointer(Buf), BufSize); 第 11 页 共 26 页 获取局域网的用户 IP 地址以及添加用户信息的源代码如下: If Res = ERROR_NO_MORE_ITEMS Then break;/资源列举完毕 If (Res NO_ERROR Then exit;/执行失败 Result := True; FreeMem(Buf); End; procedure TForm1.ServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var readb

34、uf:array02030of char; msg,head,recvip,recvname,recvworkgroup,recvmsg,memo:string; recvport:integer; f:textfile; begin ZeroMemory(readbuf0,2030); adata.Read(readbuf,sizeof(readbuf); msg:=Trim(String(Pchar(Readbuf0); /memo1.Lines.Add(msg); head:=trim(copy(msg,1,headlen); if head=LOGIN THEN /添加对方 IP 1.

35、返回对方 IP 2. 发出 Hand 握手信息 begin recvip:=abinding.PeerIP; recvport:=9000; 第 12 页 共 26 页 获取局域网的工作组名的源代码如下: / memo1.Lines.Add(login recv+recvip+inttostr(recvport); recvname:=copy(msg,headlen+1,namelen); recvworkgroup:=copy(msg,headlen+namelen+1,length(msg); adduser(recvname,recvworkgroup,recvip,recvport)

36、; handdata(recvip,myname,myworkgroup,recvport); minfo:=format(%-6s%-4d%-255s,HAND,myname,myworkgroup); /返回对方 IP /端口等信息 strpcopy(minfobuf,minfo); server.SendBuffer(recvip,recvport,minfobuf,sizeof(minfobuf); end; if head=REVLOGthen /添加对方返回的自己的 ip (对比) begin / memo1.Lines.Add(revlog recv); RECVPORT:=st

37、rtoint(copy(msg,headlen+1,portlen); recvip:=copy(msg,headlen+portlen+1,iplen); end; if head=HAND THEN /处理握手信息 添加对方 ip 返回对方 ip BEgin / memo1.Lines.Add(hand recv); RECVNAME:=COPY(msg,headlen+1,namelen); recvworkgroup:=copy(msg,headlen+namelen+1,workglen); recvip:=abinding.PeerIP; recvport:=9000; recvp

38、2pdata(recvip,recvname,recvworkgroup,recvport); END; if head=LOGOUT then /处理 logout delete 其 ip begin recvname:=copy(msg,headlen+1,namelen); if myname NO_ERROR Then exit;/Raise Exception(Res);/执行失败 /获取整个网络中的网络类型信息 Count := $FFFFFFFF;/不限资源数目 BufSize := 8192;/缓冲区大小设置为 8K GetMem(Buf, BufSize);/申请内存,用于获

39、取工作组信息 Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize); /获取计算机名称 If ( Res = ERROR_NO_MORE_ITEMS ) /资源列举完毕 or (Res NO_ERROR Then break;/执行失败 End; Result := True; FreeMem(Buf); NetworkTypeList.Destroy; End; 第 14 页 共 26 页 4.3.2 局域网内文件传输局域网内文件传输 文件传输实现之前,需要获取在线用户列表中的用户信息。所以系统设置 一个“刷新”按钮,当

40、用户点击 “刷新”后将更新界面的用户列表中所有在线 用户 的主机名,主机IP地址和工作组名。并显示在线人数。源代码如下: procedure TSendThread.Execute; /运行线程 var socket:tidtcpclient; /定义客户端套节字 fs:tfilestream; /定义文件流 begin try socket:=tidtcpclient.Create(nil); /创建客户端套界字 socket.Host:=Fip; /写入 IP socket.Connect(); /进行套节字连接 if socket.Connected then fs:=tfilestre

41、am.Create(FFileName,fmopenread); /创建文件流和文件建立关联设置 /参数 fmopenread=file mode openread try socket.WriteLn(TRANSFILE); /写入套接字类型为 TRANSFILE socket.WriteLn(FFileName); /写入传输的文件名 socket.WriteLn(inttostr(fs.Size); /整型转字符型 fs.Size 为字节流的长度 procedure TForm1.BitBtn1Click(Sender: TObject); /显示在线人数 var f:textfile;

42、 begin Label2.Caption:=INTTOSTR(USERLIST.Items.Count); end; socket.WriteStream(fs,false,false,fs.Size); /写入文件 finally fs.Free; /释放文件流 end; getmem(hostname,255); /post the hostname /分配监视器内存 zeromemory(hostname,255);/清空内存 move(myname1,hostname,length(myName);/获取传输文件名 postmessage(TranSuVisorform.handle

43、,TransferSupervisorTwo,integer(hostname),0); getmem(pname,255); zeromemory(pname,255); /post fname and size move(FFileName1,pname,length(FFileName); postmessage(TranSuVisorform.handle,TransferSupervisor,integer(pname),lSize); end; 第 15 页 共 26 页 文件传输完毕以后断开SOCKET连接并释放套节字空间。 2)服务器端响应功能: 当服务器收到来自客户端文件传输

44、连接请求后,对其进行连接响应建立连 接。连接建立后得到文件的基本信息,进行自动初始化并分配临时空间。如果 文件大小为OK就认为是文件传输完毕自动断开连接。否则接收文件开始。当传 输完毕后断开连接。其源代码如下: procedure TForm1.PServerExecute(AThread: TIdPeerThread); /服务器端. var cmd,tmpfn,msg,targetname,localdir,com:string; lsize:int64; fs:tfilestream; filename:pchar; sign,i:integer; ldir:stringarray; l

45、SavePath,Savedir:String; begin with athread.Connection do begin cmd:=trim(readln); / memo1.Lines.Add(cmd); if cmd=TRANSFILEthen begin GetMem(filename,255); zeromemory(filename,255); tmpfn:=readln; move(tmpfn1,filename,length(tmpfn); sendmessage(form1.Handle,WM_USER+100,integer(filename),0); writeln(

46、BEGIN); lsize:=strtointdef(readln,0); if lsize=0 then begin disconnect; exit; end; fs:=TFileStream.Create(filename,fmcreate); readstream(fs,lsize); fs.Free; end; if cmd=STARTthen begin msg:=readln(); /接收文件名 ldir:=split(msg,); localdir:=strpas(localroot); for i:=0 to high(ldir)-1 do begin localdir:=l

47、ocaldir+ldiri+; if not directoryexists(localdir) then createdir(localdir); /创建接收到的文件夹下边的文件夹 end; targetname:=strpas(localroot)+msg; /本地文件名 writeln(BEGIN); /发送开始信号 lsize:=strtointdef(readln,0); /接收文件大小 if lsize=0 then begin disconnect; exit; end; /如果发过来的文件是 0KB 的 会收不到 所以 Delete fs:=TFileStream.Create(targetname,fmcreate); readstream(fs,lsize); fs.Free; / openrevfilepath:=trim(strpas(localroot)+trim(ldir0); end; end; end; end; 第 15 页 共 26 页

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

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1