基于服务器技术的局域网内多点信息交互程序设计毕业设计论文.doc

上传人:文库蛋蛋多 文档编号:3028301 上传时间:2023-03-09 格式:DOC 页数:29 大小:181.50KB
返回 下载 相关 举报
基于服务器技术的局域网内多点信息交互程序设计毕业设计论文.doc_第1页
第1页 / 共29页
基于服务器技术的局域网内多点信息交互程序设计毕业设计论文.doc_第2页
第2页 / 共29页
基于服务器技术的局域网内多点信息交互程序设计毕业设计论文.doc_第3页
第3页 / 共29页
基于服务器技术的局域网内多点信息交互程序设计毕业设计论文.doc_第4页
第4页 / 共29页
基于服务器技术的局域网内多点信息交互程序设计毕业设计论文.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《基于服务器技术的局域网内多点信息交互程序设计毕业设计论文.doc》由会员分享,可在线阅读,更多相关《基于服务器技术的局域网内多点信息交互程序设计毕业设计论文.doc(29页珍藏版)》请在三一办公上搜索。

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

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

3、 Based on LANAbstractAlong 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 the file transfer to complete. But the majority file

4、 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 waste network resources, the viral invasion, reduced the

5、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 and implementation of file transfer system base on LAN

6、 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 resources to meet the exchange of information between mainf

7、rame, 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 foreign research present situation; Second, introduces

8、 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 propose the solution; Fourth, carries on the design acc

9、ording 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.目 录论文总页数:26页1引言11.1选题背景11.2国内外研究现状11.3课题研究的意义12理论基础22.1TCP/IP点对点

10、协议技术22.2C/S架构的DELPHI程序设计技术22.3SOCKET网络程序设计技术33系统需求分析43.1现行业务系统描述43.2现行系统存在的主要问题分析43.3提出解决方案44系统设计54.1系统总体架构54.2系统界面设计64.2.1界面设计64.2.2用户信息74.3系统功能模块设计94.3.1获取用户信息94.3.2局域网内文件传输134.3.3局域网内文件夹传输175系统实施及测试225.1实施概况225.2测试方案225.3测试结果23参考文献25致 谢26第一章 绪论1.1 选题背景当今世界科学技术飞速发展,尤其以计算机通信网络为代表的互联网技术更是日新月异,令人眼花燎乱

11、,目不睱接。在计算机与网络迅速发展的今天,借助于网络进行信息资源交流给人们带来了极大的方便。各种文件传输系统都已被广大用户接受。比如QQ、UC、Internet邮件等互联网中运用最为广泛的文件传输工具,但它们之间的文件传输往往对远程服务器有非常大的依赖性,没有彻底实现点对点安全的文件传输。甚至需要花费大量的金钱购买各种移动磁盘或者其他局域网内连接主机的硬件设备。而达到的效果却总是因为传输效率以及安全威胁而受到很大的限制。在这种形势下,开发一个功能简单而实用,能在Windows操作系统中运行,并且具有可移植性的局域网内文件传输工具势在必行。1.2 国内外研究现状目前,国内外企业对局域网的信息传输

12、系统认识和使用情况并不好,各个企业单位在局域网内实现文件传输,资源共享还有很大的缺陷。技术无论是从理论上或实践上都还不够完善。文件传输系统由于比较复杂,可变因素较多,安全性低,因此发展还不成熟。但是随着科学技术的发展,各种以局域网为单位的文件传输系统已经进入稳健发展期,比如说市面上比较普遍使用的QQ、UC、飞鸽传书等以内部网络为中心的资源共享系统也即将进入高速发展期。在国内,随着企业资源管理的规范化和规模的不断扩大,企业的计算机资源管理将不仅仅停留在依靠硬件或者Internet网络获取,而且将会向着安全的内部网络化资源管理方式迈进。1.3 课题研究的意义随着网络通信技术的发展与用户需求日益多样

13、化,现代局域网络正处在变革与发展之中,本课题的主要目的之一是为了更清晰地培养学生掌握科学研究方法的能力和使学生迅速体会文件传输系统的研发过程。基于局域网的文件传输系统能够让家庭网络以及各个企业等局域网对内部资料有一个快捷,准确,安全的共享。特别是对如今较大系统研发的模块分工合作得到了绝对保密性,从而使各项工作有计划、更科学的进行及顺利完成,使企业的办事效率得到显著提高。文件传输系统主要功能是自动获取局域网内用户的主机名,IP地址以及工作组名字,最终以C/S模式通过TCP/IP协议实现点到点文件传输功能。本系统既锻炼了我们的实际动手能力,使我们将大学四年所学的理论知识与实际开发相结合,又引导我们

14、进行了一次模拟实际产品的开发,对于我们以后工作能力的培养具有重要的意义。 第二章 理论基础2.1 TCP/IP点对点协议技术系统的文件传输功能主要依赖于建立客户端与服务器之间点对点的的连接后实现。所以就得与TCP/IP协议协合。TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。TCP/IP是网络中使用的基本通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,只是TCP协议处

15、于运输层,它能够确保文件准确的传送;而IP协议处于网络层,它标识了处于网络中任意主机的唯一身份。TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。采用TCP/IP详解的原因:第一,局域网内主机之间的是依靠IP地址进行标识。本设计要实现文件及文件夹的传输就需要以IP地址为传送基础进行; 第二,新用户上线后需要向局域网内所有用户广播自己的主机信息使网内主机得到本机的IP地址等。需要用到与TCP/IP相对的UDP协议。2.2 C/S架构的DELPHI程序设计技术本系统的开发主要采用C/S结构。所谓C/S (Client/S

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

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

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

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

20、开的端口。服务器使用Socket监听指定的端口,端口可以随意指定,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。第三章 系统需求分析 3.1 现行业务系统描述目前各种文件资源交流的主要方式可以分为三种:(1)通过局域网内主机之间以文件共享后再经过复制,粘贴方式实现。(2)依靠可移动磁盘的两次信息转移实现。(3)通过Internet邮件方式实现。此三种方法并非不可行,但它们都需要花费较长的时间以及安全性也得不到保证,工作效率将在很大程度上受到限制。如果通过局域网内主机之间复制粘贴来实现文件资源共享,将浪费大量的网络带宽,极大程度上影响了网内用户的工作效率,甚至导致用户不能正常工

21、作;如果依靠移动磁盘实现文件的共享,将花费大量的金钱,而文件较大移动磁盘容量不足的情况下会令人极为头疼,何况移动磁盘是病毒传播的重要途径;如果通过Internet邮件方式实现,用户需要接入Internet服务器,这种方式对远程服务器有非常大的依赖性,即使1KB的文件都要经历极度繁琐的路径,不能彻底实现点对点的即时交流,文件较大的情况下就不言而喻了。最重要的是,在如今病毒黑客横行的网络世界中,信息的安全性也得不到保证。 综上所述,依靠Internet网络等方式实现文件资源交互的准确性,快速性及安全性远达不到理想的要求。3.2 现行系统存在的主要问题分析针对企业来说,提高工作效率是企业的一个重心;

22、降低成本是企业赢取最大利益的重要方式;保证信息安全却是可能影响企业生死存亡的关键。企业需要对各种因素有足够深刻的认识才可能实现最终目标-盈利。而传统的文件资源交互方式却存在很多的问题,大致可以分为:一、不能有效地降低文件交互成本;二、文件交换过程过于繁琐;三、内部机密资料得不到安全保证;四、文件交互的准确性得不到更本保证。3.3 提出解决方案解决当前问题的方案主要是指在允许的成本、性能要求下,分析系统实施的可行性,提出功能实现的依据,包括其简单性,安全性以及经济可行性。根据企业简单快速,安全的资源共享等要求,提出以下四种解决方案:1)操作简单性方案:开发的系统需要有以下特点:Windows友好

23、的用户界面和系统快速的应用方法,简单易操作,不需对使用人员进行培训,可以使用户很好的掌握。对传输文件过程中的文件的载入设置都是非常简单可行,比如:如果用户忘记选择文件接收者的时候系统会自动提示“请选择接收用户”要求用户选择主机而不导致错误出现而引发的不便,这样就大大提高工作效率。而且开发的系统应该简单易操作,易维护,减少了不必要的麻烦。对于家庭局域网以及一些比较简单的中小企业网,系统必须做到在实际应用中较为成功。系统应为用户提供Windows所一贯坚持的非常友好、操作简单的用户界面。2)传输安全性方案:系统开发完成后,能有效地使内部资源与外网的完全隔离,从而保证了内部机密文件的安全性。3)经济

24、可行性方案:系统开发完成必须作到提高文件共享效率,不管是在资金上还是效率上都能达到预期的效果的。最重要的一点就是:使用户避免花费高额的资金去购买各种移动磁盘甚至是通过Internet邮件方式,使得用户方便的同时,也让信息少走了不少“弯路”。4)快速准确性方案:鉴于系统的目标要求和特点,能够保证快速准确地实现文件共享。综合上述,本设计在Windows XP操作系统下,以中文版Delphi7为开发工具,以C/S为系统功能结构,基于点对点的TCP/IP协议理论,通过Socket套节字连接客户端与服务器实现文件及文件夹传输。彻底避免了文件交换过程与外部网络的接触,实现快速的文件资源共享。并能够确保内部

25、文件的机密性,能够在很大程度上有效地提高工作效率。第四章 系统设计4.1 系统总体架构本系统的设计过程主要分为两部分:第一部分:系统界面的设计以及获取局域网内所有在线用户的主机名,IP地址以及工作组名。使网内所有用户都能够获取其他用户信息。第二部分:文件传输是本设计功能实现的核心。系统采用C/S架构将系统运行载体分为两个部分:客户端与服务器端。文件传输需要建立有效的连接后,通过TCP/IP协议实现点对点的文件传输。通信双方是通过三次握手建立Socket连接,实现文件传输,最后关闭套节字连接。文件传输的整个流程图如下:服务器端主机客户端主机TCP/IP连接响应套节字连接请求LIANJIETCP3

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

27、eDialog1;c. 用于点到点文件传输的客户端PClientConnected及服务器端PServerAfterCommandHandler;d. 用于广播主机信息的客户端ClientStatus和服务器端ServerStatus数据报组件;e. 用于设置退出系统和窗口前端显示的PopupMenu1菜单;5)分别创建刷新按钮BitBtn1,文件传输BitBtn2以及文件夹传输BitBtn3按钮。设置的界面如下图:图 3 基于局域网的文件传输系统界面4.2.2 用户信息用户列表建立以后,将局域网内所有在线用户的主机名,主机IP地址以及工作组名显示于列表中。方法是首先确定用户主机是上线信息,返

28、回信息,握手信息还是离线信息。这里对他们分别设置了一个信息发送的头信息,分别设置为:LOGIN,HAND以及LOGOUT。如果新用户上线,它就向局域网以LOGIN为头信息广播本机的主机名,IP地址以及工作组。局域网内所有在线主机收到该广播信息以后将新上线的主机名,端口,IP地址以及工作组信息添加到自己的在线用户列表并都以HAND为头信息向局域网广播本机的握手信息;当包括刚上线主机在内的局域网所有主机收到这个握手信息以后线判断自己的在线用户列表中是否存在这个主机广播的主机信息,如果不存在就说明它是刚上线主机,最后将这个信息添加到自己在线列表,否则就不加;当用户下线的时候也将自己的信息以LOGOU

29、T为头信息广播给局域网,其他在线用户收到这个消息以后将其主机信息从本地在线用户列表删除。其部分的源代码分别如下:procedure TForm1.FormCreate(Sender: TObject); /新用户上线 以LOGIN为头信息var wsadata:twsadata; myinfobuf:array0.1023of char; /本机信息 pmyname:array0.1023of char; /本机名wList,clist: TStringList ; i,j:integer;begin mainhide; /把程序图标显示在系统托盘里边 if wsastartup($101,w

30、sadata)0 then exit; /获取本机名 gethostname(pmyname,sizeof(pmyname); /获取主机名 myname:=strpas(pmyname);/得到主机名 try wlist:=tstringlist.Create; clist:=tstringlist.Create; GetServerList(wList); /获取本机IP for i:=0 to wlist.Count-1 do begin getusers(wlist.Stringsi,clist);/得到用户名 for j:=0 to clist.Count-1 do begin if

31、 (clist.Stringsj=uppercase(myname) or (clist.Stringsj=myname) then begin myworkgroup:=wlist.Stringsi; /获本机工作组 end; finally wlist.Free; clist.Free; end; myinfo:=format(%-6s%-255s%-255s,LOGIN,myname,myworkgroup); strpcopy(myinfobuf,myinfo); client.Broadcast(myinfobuf,9000); end;function tform1.handdat

32、a(ip,name,workgroup:string;port:integer):string; /向好友发握手信息 var minfobuf:array0.1023of char; minfo:string;begin minfo:=format(%-6s%-255s%-255s,HAND,name,workgroup); strpcopy(minfobuf,minfo); server.SendBuffer(ip,port,minfobuf,sizeof(minfobuf);end;procedure TForm1.N10Click(Sender: TObject); /用户离线 以LOG

33、INOUT为头信息var mylogoutbuf:array0.1023of char; mylogoutinfo:string;begin mylogoutinfo:=format(%-6s%-255s,LOGOUT,myname); strpcopy(mylogoutbuf,mylogoutinfo); client.Broadcast(mylogoutbuf,9000); / 广播自己离线信息 Application.Terminate; /销毁线程end; 4.3 系统功能模块设计4.3.1 获取用户信息本部分主要是显示用户列表中在线用户的主机名,主机的IP地址以及工作组名三部分,代码

34、分别进行介绍如下:Function tform1.GetUsers( GroupName : string;List : TStringList) : Boolean; /获取工作组的计算机名称type TNetResourceArray = TNetResource;VarNetResource : TNetResource;Buf : Pointer;Count,BufSize,Res : DWord;Ind : Integer;lphEnum : THandle;Temp : TNetResourceArray;TmpStr:String;BeginResult := False;Fil

35、lChar(NetResource, SizeOf(NetResource), 0);/初始化网络层次信息NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;/类型为服务器(工作组)/ NetResource.dwUsage := RESOURCEUSAGE_CONTAINER;NetResource.dwScope := RESOURCETYPE_DISK;/列举文件资源信Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK,RESOURCEUSAGE_CONTAINE

36、R, NetResource,lphEnum);If Res NO_ERROR Then Exit; /执行失败While True Do/列举指定工作组的网络资源BeginCount := $FFFFFFFF;/不限资源数目BufSize := 8192;/缓冲区大小设置为8KGetMem(Buf, BufSize);/申请内存,用于获取工作组信息/获取计算机名称 Res := WNetEnumResource(lphEnum, Count, Pointer(Buf), BufSize);获取局域网内用户名的源代码如下:procedure TForm1.ServerUDPRead(Sende

37、r: TObject; AData: TStream; ABinding: TIdSocketHandle);var readbuf:array0.2030of 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)

38、; head:=trim(copy(msg,1,headlen); if head=LOGIN THEN /添加对方IP 1.返回对方IP 2. 发出Hand握手信息 begin recvip:=abinding.PeerIP; recvport:=9000;If Res = ERROR_NO_MORE_ITEMS Then break;/资源列举完毕 If (Res NO_ERROR) then Exit; /执行失败 Temp := TNetResourceArray(Buf); For Ind := 0 to Count - 1 do/列举工作组的计算机名称 Begin tmpStr:=

39、Temp.lpRemoteName;/获取工作组的计算机名称 Delete(tmpstr,1,2); list.Add(tmpstr); Inc(Temp); End; End; Res := WNetCloseEnum(lphEnum);/关闭一次列举 If Res NO_ERROR Then exit;/执行失败Result := True; FreeMem(Buf);End;获取局域网的用户IP地址以及添加用户信息的源代码如下:Function tform1.GetServerList( var List : TStringList ) : Boolean; /获取服务列表Var Net

40、Resource : TNetResource; /初始化网络层次信息Buf : Pointer;Count,BufSize,Res : DWORD;lphEnum : THandle; / 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); handdat

41、a(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:=strtoint(copy

42、(msg,headlen+1,portlen); recvip:=copy(msg,headlen+portlen+1,iplen); end;if head=HANDTHEN /处理握手信息 添加对方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; recvp2pdata(recvip,r

43、ecvname,recvworkgroup,recvport); END;if head=LOGOUTthen /处理logout delete 其ip begin recvname:=copy(msg,headlen+1,namelen); if mynamerecvname then deleteuser(recvname); end;获取局域网的工作组名的源代码如下:p : TNetResourceArray;i,j : SmallInt;NetworkTypeList : TList; /返回局域网中的工作组类型BeginResult := False;NetworkTypeList := TList.Create; /获取局域网中的工作组信息List.Clear;/获取整个网络中的文件资源的句柄,lphEnum为返回名柄Res:=WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, Nil,lphEnum); /得到网络中的所有工作组的名称If Res NO_ERROR Then exit;/

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

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号