资源描述
基于局域网的信息收发系统的设计与实现摘 要网络通讯在当今已经不算新鲜事物,但大多数网络通讯都需要借助Internet上的效劳器,这就给那些具有大规模内部网络的用户造成了许多问题,如浪费网络资源、遭遇到网络攻击、传播的病毒、破坏防御系统等等。由于互连网上的网络通讯工具给企业内部信息交流带来了不便,所以为了方便内部网络的用户之间的沟通,需要开发一个基于局域网的信息收发系统的即时通讯工具,实现在内部网络中进行信息的交流。本课题设计主要针对局域网通讯而开发设计的,采用的是C/S构架,利用Delphi编程工具来实现单播、播送以及在线用户显示和查看历史记录的功能,并借助一些网络通讯组件,成功的实现了在局域网上的即时通讯。本论文共分为六局部。第一局部是课题的背景及研究意义;第二局部是所运用的理论根底知识;第三局部是本系统的需求分析;第四局部是系统结构和模块设计;第五部是实施和测试情况;最后是本设计的结论总结及局部参考文献。关键词:即时通讯;C/S构架;单播;播送;历史记录 The Design and Implementation of Receiving and Sending Information System Based On LANAbstractThe network communication in already did not calculate the new things now, but the majority network communication all needed to draw support from on Internet the server, this gave these to have the large-scale internal network user to create many problems, like waste network resources, bitter experience to network attack, dissemination virus, destruction defense system and so on. Because on the interconnection network communication facilities the interior communication have brought inconveniently for the enterprise, therefore in order to facilitate internal network between users communication, needs to develop one based on the local area network information receiving and dispatching system instant message facilities, realizes carries on the information in the internal network the exchange. This topic design mainly aims at the local area network communication to develop the design, uses is the C/S structure, realizes the unicast, the broadcast as well as the online user demonstration and the examination historic record function using the Delphi programming tool, and drew support from some network communication module, the success realization on the local area network instant message. The present paper altogether divides into six parts. The first part is the topic background and the research significance; the second part is the rationale knowledge which utilizes; the third part is this system demand analysis; the fourth part is the system structure and the module design; fifth is the implementation and the test situation; finally is this design conclusion summary and the part reference.Key words: Instant message; C/S structure; Unicast; Broadcast; Historic record目 录论文总页数:25页1引言1课题的背景1国内外研究现状1本课题研究的意义22理论根底2C/S软件架构技术2用户数据报协议UDP3单播Unicast3播送Broadcast43需求分析5现行业务系统描述5现行系统存在的主要问题分析5提出解决方案64系统设计6系统总体架构6界面设计7系统功能模块设计9网络组件9用户信息显示功能10局域网内实现单播功能14局域网内实现播送功能17历史信息记录功能175系统实施及测试18实施概况18测试方案19测试结果21结 论22参考文献22致 谢24声 明251 引言1.1 课题的背景随着计算机网络日新月异的开展,人们的交流方式越来越多,传统的交流方式,如:信件、电报、 等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。因此出现了QQ、UC等聊天工具,然而QQ、UC等聊天工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯、文件共享的专用工具。目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且它们中大局部都对远程效劳器有非常大的依赖性,没有彻底实现点对点的交流。为此,我们决定开发一个专用于实现基于局域网内部计算机之间即时通讯、文件传输的软件,以方便内网计算机之间信息的交流。本软件属于点对点连接的,在连接并通信时,尤其是近程的即时通讯,彻底的脱离了远程的效劳器,防止了和远程效劳器连接时过多的浪费网络资源。并且防止了效劳器忙或与效劳器无法连接时,浪费过多时间用于和效劳器建立连接。因此,这个软件是极具适应性和实用性的即时通讯软件。1.2 国内外研究现状即时通讯的出现和互联网有着密不可分的关系,从技术上来说,IM完全基于TCP/IP网络协议族实现,而TCP/IP协议族是整个互联网得以实现的技术根底,最早期的即时通讯雏形可以追溯到芬兰人Jarkko Oikarinen于1988年创造的一种网络聊天协议IRCInternet Relay Chat,该协议仅支持文本聊天,并且也不支持好友列表的概念,1996年第一个 IM产品ICQ创造后,即时通讯的技术和功能开始根本成型,其工作原理开始被人们所了解,但不同厂商实现即时通讯技术原理时采用的协议却有较大的差异,甚至到目前为止世界主要的 IM效劳运营商AOL(American Online:美国在线)仍然没有公布其主要即时通讯产品AIMAmerican Instant Messenger的专用协议。从1997年第一代即时通讯软件诞生后开展到现在,即时通讯行业先后经历了文本通信第一代、语音交流第二代、视频交流第三代和跨网沟通第四代等多种信息传递技术变革。尽管第一代、第二代以及第三代即时通讯软件的信息传递主要在互联网范围内,但各个阶段都可以看到即时通讯行业在跨网通讯领域中的应用,在移动即时信息进一步深化应用,跨网语音交流进一步加强,跨网通讯领域的进一步拓宽,都意味着真正意义的跨网即时通讯已开展成型。可以说跨网即时通讯应用的萌芽、雏形以及诞生,都贯穿着整个行业的开展。而在过去的几年,行业的主导效劳商腾讯在香港成功上市,并在当年取得55%的收入增长的佳绩。新浪斥资近两亿元收购UC即时通讯技术平台,微软的MSN加大了中国市场的攻势,TOM-SKYPE高调推出。即时通信行业出现了连续多年高速的增长。1.3 本课题研究的意义随着现代通讯技术不断的开展,即时通讯技术也有飞速的开展,它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术,被很多人称为电子邮件创造以来最酷的在线通讯方式。但是为了提高通讯的质量,很多企业在网络上进行即时通讯时一般都不会采用Internet上的即时通讯软件,如QQ、MSN、OICQ等。因此本课题主要是研究基于局域网的信息收发系统的设计与实现,希望能通开发设计的局域网通讯软件来方便在内部网络上的信息交流,这样不紧提高了通讯的质量,还能有效的防护在互连网上带来的攻击,对于那些大中型企业来说更是需要这样的一个自己内部的即时通讯工具,防止带来工作效率上不去;病毒及木马的感染率增大;远程效劳器连接时过多的浪费网络资源;互连网由于某种原因而断开时造成通讯中断等问题。2 理论根底2.1 C/S软件架构技术C/SClient/Server结构,即大家熟知的客户机和效劳器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用开展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的开展方向。传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。由于没能提供用户真正期望的开放环境,C/S结构的软件需要针对不同的操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适应百台电脑以上局域网用户同时使用。图1 客户机/效劳器计算结构2.2 用户数据报协议UDP用户数据报协议UDP是ISO参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送效劳。UDP协议根本上是IP协议与上层协议的接口。UDP协议适用端口分辨运行在同一台设备上的多个应用程序。 由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到正确的回复。这是通过使用UDP的“端口号完成的。源端口号标识了请求域名效劳的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到源主机的这个端口上。与TCP不同,UDP并不提供对IP协议的可靠机制、流控制以及错误恢复功能等。由于UDP比拟简单,UDP头包含很少的字节,比TCP负载消耗少,所以UDP适用于不需要TCP可靠机制的情形,比方,当高层协议或应用程序提供错误和流控制功能的时候。UDP是传输层协议,效劳于很多知名应用层协议,包括网络文件系统NFS、简单网络管理协议SNMP、域名系统DNS以及简单文件传输系统TFTP。 2.3 单播Unicast单播Unicast指网络中从源向目的地转发单播流量的过程。单播流量地址唯一。单播方式下,只有一个发送方和一个接收方。与之比拟,组播是指单个发送方对应一组选定接收方的一种通信,任意播是指任意发送方对应一组较为接近的接收方间的一种通信。早期的点对点通信含义类似于单播。单播传输是 LANs 传输中的主要使用方式。所有 LANs如以太网和 IP 网络都支持单播传输模式,并且大多数用户都了解标准单播应用程序,如: 、smtp、ftp 和 telnet 都作为 TCP 传输协议。新版本的网际协议第六版IPv6支持单播同时也支持任意播和组播类型。许多路由选择协议如路由选择信息协议RIP和开放最短路径优先OSPF,都支持高效 Internet 单播路由选择过程。而IPv6 支持单播Unicast、组播Multicast和任意播Anycast三种类型。IPv6 中没有关于播送Broadcast的具体划分,而是作为组播的一个典型类型。图2 单播物理结构图2.4 播送Broadcast网络播送是指一个节点同时向相同域中的其它所有节点传输数据包的过程。组播是一种特殊的播送,其中一组请求收听的选定用户将收到播送。播送传输通常在局域网如以太网中进行,但有时也发生在虚拟局域网VLAN中。IPv6 支持单播Unicast、组播Multicast以及任意播Anycast三种类型,IPv6 中没有关于播送Broadcast的具体划分,而是作为组播的一个典型。生成播送信息的应用程序包括地址解析协议ARP。通过该协议,主机发送一个地址解析查询到局域网中的所有计算机上,以实现网络 IP 地址的分配。有些路由选择协议,如RIP,主要用于支持网络设备“Advertise网络效劳。网络播送中涉及以下重要概念:播送域Broadcast Domain:这是一个限定区域,其中的所有设备都可以共享信息。换句话说,与网络相连,且负责接收播送的所有设备都是同一播送域的一局部。在一个共享以太网中,工作站通过共享媒体将帧播送到其它所有节点。其它节点收听播送,只接收寻址到它们的帧。因此,共享以太网中的所有节点都属于同一播送域。此外通过虚拟局域网技术可以创立一个虚拟播送域。播送地址Broadcast Address:这是一个特殊地址,当数据包可以寻址到该地址时,可以帮助所有设备翻开和处理信息。例如,MAC 地址,格式为 1xFFFFFFFF 是一种播送地址;IP 地址255.255.255.255是通用播送地址。任何设备都将翻开寻址到播送地址的信息,并将它们传送到下一个工作站。播送风暴Broadcast Storm:当主机系统响应一个在网上不断循环的播送数据包或者试图响应一个没有应答的系统时就会发生播送风暴。随着网络数据包数量的增加,播送风暴可能会引起网络拥塞问题。为防止播送风暴的发生,需要细心配置网络以阻止非法播送信息的进入。图3 播送物理结构图3 需求分析3.1 现行业务系统描述随着计算机网络日新月异的开展,人们的交流方式越来越多,传统的交流方式如:信件、电报、 等已经难以满足人们的交流要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。两台计算机之间进行即时通讯、发送文件等交流方式已经成为时代的潮流。因此出现了QQ、UC等即时通讯工具。这些即时通讯业务属于根底语音业务外的数据增值类业务,从范畴来讲属于“消息类业务,本质是完成对“文字、声音、图像信息的传递。同属于消息类的业务还有短信、彩信等,他们之间都存在一定程度的替代性,同时又各有长短。但不会成为那些大中型企业内部的主要通讯工具,在企业中要求很简单,能确保快速正常的即时通讯,还要具有很好的平安性,这样才能提高工作效率,增加企业的效益。3.2 现行系统存在的主要问题分析目前,像QQ、UC等即时通讯工具虽然方便、实用,但是,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于作为即时通讯、文件共享的专用工具。并且现在用于实现单一的即时通讯、文件共享的软件真的实在太少,因此不能为那些大中型企业所使用,而且在现行的系统中主要的问题是:一、在即时通讯系统中由于防火墙、网络速度等原因难以建立或者速度很慢,IM效劳器还提供消息中转效劳,即时消息全部先发送到IM效劳器,还要再由效劳器转发给对方,所以连接时过多的浪费了网络资源,并且在效劳器忙或与效劳器无法连接时,浪费过多时间用于和效劳器建立连接;二、即时通讯工具始终是通过互连网的效劳器来传输的,正是这样所以更有可能会带来遭遇到网络上的许多攻击,如木马,蠕虫等。为企业中的信息交流带来了很大的平安性问题。3.3 提出解决方案根据企业在内部网络上信息交流的需求,所以本课题就主要针对内部的网络来设计这样的一个即时通讯系统,本系统是在基于局域网的在IM客户端和IM效劳器之间通讯采用的UDP协议和C/S软件构架技术上开发的通讯工具,它在近程的即时通讯时彻底的脱离了远程的效劳器,不通过远程效劳器来完成实现通讯,防止了和远程效劳器连接时过多的浪费网络资源。并且防止了效劳器忙或与效劳器无法连接时浪费过多时间用于和效劳器建立连接,同时也为内网效劳增强了许多的平安性,彻底的将通讯工具从互连网上搬到内网中来,这样一来就不会受到来自互连网的攻击了。这种系统主要是为了方便了大中型企业在内部即时通讯要求,从而进一步提高工作效率,增加企业的效益。4 系统设计4.1 系统总体架构本系统主要是采用C/S结构,并且每个客户端也是作为效劳器端的,当系统发送信息给局域网的用户,主要由单播模块和播送模块来实现,而其中的单播模块和用户信息模块是具有依赖性的,在接收信息的时候又有两个模块来完成,一是信息接收的模块,另一个是信息查看的模块。由此可以看出本系统主要分为两大局部模块:发送模块和接收模块。发送模块:单播模块,播送模块,用户信息模块,信息记录模块接收模块:接收信息模块,查看信息模块有了以上的了解了那让我们来看看系统的架构图:系统主界面效劳器/客户用 户 名工 作 组显示用户信息IP 地 址单 播 发 送信 息 写 入广 播 发 送接 收 信 息查看历史记录图4 系统架构图4.2 界面设计为了方便用户的操作,我采用比拟简单的界面设计,主界面包括播送按钮、发送按钮、刷新按钮、在线用户显示框、信息输入窗体。其中播送按钮是将信息窗体中的内容发送到所有的用户;发送按钮是将信息窗体中的内容发送到指定的用户;在线用户显示框中选取指定的用户和查看用户的信息;刷新是重载用户列表。图5 主界面当有信息传过来时将自动弹出一个信息接收的窗体,窗体包括查看按钮和关闭按钮还有一个显示对方用户的区域,他们分别是用来翻开并查看信息或是不想查看而关闭的作用。图6 信息接收界面如过你在图6中点击了查看按钮,那么将会弹到显示信息查看的窗体上,在文本区那么会显示对方传送过来的信息内容,在查看了之后有个关闭按钮,用来结束对话框,便可以回到图5的界面了。图7 信息查看界面在历史记录的窗体中点击记录文件按钮来选择保存的路径,将会自动生成一个文本文件来对通讯记录进行保存。图8 历史记录4.3 系统功能模块设计4.3.1 网络组件UDP协议由TCP协议衍生而来。TCP用于确保点对点的连接,而UDP并不保证发送的数据一定到达,也不说明数据报的传输成功或失败。本系统设计使用的是TIdUDPClient和TIdUDPServer两个用户数据报UDP组件,首先创立Delphi工程。然后向工程组再添加一个工程。把一个工程作为客户,另一个作为效劳器。为连接到UDP效劳器,需要一个TIdUDPClient组件。用来表示效劳器的IP地址和端口号。由于UDP是无连接的,因此在UDP的接口方法中不包括Connect方法。要使用Internet Direct实现的组件,只需使用Send向给定的IP地址和端口号播送一个命令字符串。其中我为IP地址和端口号的设置分别为127.0.0.1和9000。效劳器是作为应用程序实现的,它对客户程序发出的一个简单的命令集进行响应。为实现效劳器,程序将监听DefaultPort端口上的播送,并将设置为True。下面是我对TIdUDPClient和TIdUDPServer组件的设置图:图9 TIdUDPClient组件设置图10 TIdUDPServer组件设置4.3.2 用户信息显示功能为了方便用户选取单个用户进行信息发送和查看在线用户的信息,所以设计了一个ListView来进行显示如图5,在ListView中包括了用户名、工作组、IP地址。当有用户翻开本系统的时候将会向局域网中的所有用户发送一个握手信息来获取网络中的在线用户信息并添加到列表中显示出来,同时也把自己的网络资源信息发送给对方,使自己被添加到其他用户的列表中。其中分别要对网络中的所有的用户名、工作组、IP地址进行获取,下面来看一下对于获取这些网络资源的代码局部。4.3.3 局域网内实现播送功能在本设计中单播发送的按钮为BitBtn3,主要是通过IdUDPServer和IdUDPClient组件来编写的,主要是使用了来对信息进行发送的,在发送时将会把信息发送给在局域网内部的所有用户包括自己。下面是发送按钮的代码局部:procedure TForm1.BitBtn3Click(Sender: TObject); var chatinfo:string; chatinfobuf:array0.2030of char; f:textfile;begin chatinfo:=format(%-6s%-255s%-1024s,CHAT,myname,memo1.Lines.Text); strpcopy(chatinfobuf,chatinfo); client.Broadcast(chatinfobuf,9000);end;4.3.4 历史信息记录功能为了能让用户对历史的信息进行查看,所以本设计中包含了一个对历史信息进行记录的功能,主要是创立一个记事本文件对信息进行复制保存,以下就是历
展开阅读全文