基于局域网的信息收发系统的设计与实现——毕业论文

上传人:good****022 文档编号:116648091 上传时间:2022-07-06 格式:DOC 页数:28 大小:484.50KB
返回 下载 相关 举报
基于局域网的信息收发系统的设计与实现——毕业论文_第1页
第1页 / 共28页
基于局域网的信息收发系统的设计与实现——毕业论文_第2页
第2页 / 共28页
基于局域网的信息收发系统的设计与实现——毕业论文_第3页
第3页 / 共28页
点击查看更多>>
资源描述
基于局域网的信息收发系统的设计与实现基于局域网的信息收发系统的设计与实现 摘摘 要要 网络通讯在当今已经不算新鲜事物,但大多数网络通讯都需要借助 Internet 上的服务器,这就给那些具有大规模内部网络的用户造成了许多问题, 如浪费网络资源、遭遇到网络攻击、传播的病毒、破坏防御系统等等。由于互 连网上的网络通讯工具给企业内部信息交流带来了不便,所以为了方便内部网 络的用户之间的沟通,需要开发一个基于局域网的信息收发系统的即时通讯工 具,实现在内部网络中进行信息的交流。本课题设计主要针对局域网通讯而开 发设计的,采用的是 C/S 构架,利用 Delphi 编程工具来实现单播、广播以及在 线用户显示和查看历史记录的功能,并借助一些网络通讯组件,成功的实现了 在局域网上的即时通讯。本论文共分为六部分。第一部分是课题的背景及研究 意义;第二部分是所运用的理论基础知识;第三部分是本系统的需求分析;第 四部分是系统结构和模块设计;第五部是实施和测试情况;最后是本设计的结 论总结及部分参考文献。 关键词关键词:即时通讯;C/S 构架;单播;广播;历史记录 The Design and Implementation of Receiving and Sending Information System Based On LAN Abstract The 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课题的背景1 1.2国内外研究现状1 1.3本课题研究的意义2 2理论基础2 2.1C/S 软件架构技术 2 2.2用户数据报协议(UDP).3 2.3单播(UNICAST)3 2.4广播(BROADCAST) 4 3需求分析5 3.1现行业务系统描述5 3.2现行系统存在的主要问题分析5 3.3提出解决方案6 4系统设计6 4.1系统总体架构6 4.2界面设计7 4.3系统功能模块设计9 4.3.1网络组件 .9 4.3.2用户信息显示功能 10 4.3.3局域网内实现单播功能 14 4.3.4局域网内实现广播功能 17 4.3.5历史信息记录功能 17 5系统实施及测试.18 5.1实施概况.18 5.2测试方案.19 5.3测试结果.21 结 论.22 参考文献.22 致 谢.24 声 明.25 第 1 页 共 25 页 1 1引言引言 1.11.1课题的背景课题的背景 随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流 方式,如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即 时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,计算机 之间进行即时通讯、发送文件等交流方式已经成为必然潮流。因此出现了 QQ、UC 等聊天工具,然而 QQ、UC 等聊天工具虽然方便、实用,但是,娱乐功 能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不 能作为用于即时通讯、文件共享的专用工具。目前,用于实现单一的即时通讯、 文件共享的软件实在太少,而且它们中大部分都对远程服务器有非常大的依赖 性,没有彻底实现点对点的交流。为此,我们决定开发一个专用于实现基于局 域网内部计算机之间即时通讯、文件传输的软件,以方便内网计算机之间信息 的交流。本软件属于点对点连接的,在连接并通信时,尤其是近程的即时通讯, 彻底的脱离了远程的服务器,避免了和远程服务器连接时过多的浪费网络资源。 并且避免了服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立 连接。因此,这个软件是极具适应性和实用性的即时通讯软件。 1.21.2国内外研究现状国内外研究现状 即时通讯的出现和互联网有着密不可分的关系,从技术上来说,IM 完全基 于 TCP/IP 网络协议族实现,而 TCP/IP 协议族是整个互联网得以实现的技术基 础,最早期的即时通讯雏形可以追溯到芬兰人 Jarkko Oikarinen 于 1988 年发 明的一种网络聊天协议 IRC(Internet Relay Chat) ,该协议仅支持文本聊天, 并且也不支持好友列表的概念,1996 年第一个 IM 产品 ICQ 发明后,即时通讯 的技术和功能开始基本成型,其工作原理开始被人们所了解,但不同厂商实现 即时通讯技术原理时采用的协议却有较大的差异,甚至到目前为止世界主要的 IM 服务运营商 AOL(American Online:美国在线)仍然没有公布其主要即时通讯 产品 AIM(American Instant Messenger)的专用协议。从 1997 年第一代即时 通讯软件诞生后发展到现在,即时通讯行业先后经历了文本通信(第一代) 、语 音交流(第二代) 、视频交流(第三代)和跨网沟通(第四代)等多种信息传递 技术变革。尽管第一代、第二代以及第三代即时通讯软件的信息传递主要在互 联网范围内,但各个阶段都可以看到即时通讯行业在跨网通讯领域中的应用, 在移动即时信息进一步深化应用,跨网语音交流进一步加强,跨网通讯领域的 进一步拓宽,都意味着真正意义的跨网即时通讯已发展成型。可以说跨网即时 通讯应用的萌芽、雏形以及诞生,都贯穿着整个行业的发展。而在过去的几年, 第 2 页 共 25 页 行业的主导服务商腾讯在香港成功上市,并在当年取得 55%的收入增长的佳绩。 新浪斥资近两亿元收购 UC 即时通讯技术平台,微软的 MSN 加大了中国市场的攻 势,TOM-SKYPE 高调推出。即时通信行业出现了连续多年高速的增长。 1.31.3本课题研究的意义本课题研究的意义 随着现代通讯技术不断的发展,即时通讯技术也有飞速的发展,它是一种 使人们能在网上识别在线用户并与他们实时交换消息的技术,被很多人称为电 子邮件发明以来最酷的在线通讯方式。但是为了提高通讯的质量,很多企业在 网络上进行即时通讯时一般都不会采用 Internet 上的即时通讯软件,如 QQ、MSN、OICQ 等。因此本课题主要是研究基于局域网的信息收发系统的设计 与实现,希望能通开发设计的局域网通讯软件来方便在内部网络上的信息交流, 这样不紧提高了通讯的质量,还能有效的防护在互连网上带来的攻击,对于那 些大中型企业来说更是需要这样的一个自己内部的即时通讯工具,避免带来工 作效率上不去;病毒及木马的感染率增大;远程服务器连接时过多的浪费网络 资源;互连网由于某种原因而断开时造成通讯中断等问题。 2 2理论基础理论基础 2.12.1C/SC/S 软件架构技术软件架构技术 C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软 件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配 到 Client 端和 Server 端来实现,降低了系统的通讯开销。目前大多数应用软 件系统都是 Client/Server 形式的两层结构,由于现在的软件应用系统正在向 分布式的 Web 应用发展,Web 和 Client/Server 应用都可以进行同样的业务处 理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新 的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。 这也就是目前应用系统的发展方向。 传统的 C/S 体系结构虽然采用的是开放模式,但这只是系统开发一级的开 放性,在特定的应用中无论是 Client 端还是 Server 端都还需要特定的软件支 持。由于没能提供用户真正期望的开放环境,C/S 结构的软件需要针对不同的 操作系统系统开发不同版本的软件,加之产品的更新换代十分快,已经很难适 应百台电脑以上局域网用户同时使用。 第 3 页 共 25 页 图 1 客户机/服务器计算结构 2.22.2用户数据报协议(用户数据报协议(UDPUDP) 用户数据报协议(UDP)是 ISO 参考模型中一种无连接的传输层协议,提供 面向事务的简单不可靠信息传送服务。UDP 协议基本上是 IP 协议与上层协议的 接口。UDP 协议适用端口分辨运行在同一台设备上的多个应用程序。 由于大多数网络应用程序都在同一台机器上运行,计算机上必须能够确保 目的地机器上的软件程序能从源地址机器处获得数据包,以及源计算机能收到 正确的回复。这是通过使用 UDP 的“端口号”完成的。源端口号标识了请求域 名服务的本地机的应用程序,同时需要将所有由目的站生成的响应包都指定到 源主机的这个端口上。与 TCP 不同,UDP 并不提供对 IP 协议的可靠机制、流控 制以及错误恢复功能等。由于 UDP 比较简单,UDP 头包含很少的字节,比 TCP 负载消耗少,所以 UDP 适用于不需要 TCP 可靠机制的情形,比如,当高层协议 或应用程序提供错误和流控制功能的时候。UDP 是传输层协议,服务于很多知 名应用层协议,包括网络文件系统(NFS) 、简单网络管理协议(SNMP) 、域名系 统(DNS)以及简单文件传输系统(TFTP) 。 2.32.3单播(单播(UnicastUnicast) 单播(Unicast)指网络中从源向目的地转发单播流量的过程。单播流量地 址唯一。单播方式下,只有一个发送方和一个接收方。与之比较,组播是指单 个发送方对应一组选定接收方的一种通信,任意播是指任意发送方对应一组较 为接近的接收方间的一种通信。早期的点对点通信含义类似于单播。 单播传输是 LANs 传输中的主要使用方式。所有 LANs(如以太网)和 IP 网络都支持单播传输模式,并且大多数用户都了解标准单播应用程序,如: 第 4 页 共 25 页 http、smtp、ftp 和 telnet 都作为 TCP 传输协议。新版本的网际协议第 六版(IPv6)支持单播同时也支持任意播和组播类型。许多路由选择协议如路 由选择信息协议(RIP)和开放最短路径优先(OSPF) ,都支持高效 Internet 单播路由选择过程。 而 IPv6 支持单播(Unicast) 、组播(Multicast)和任意播(Anycast) 三种类型。IPv6 中没有关于广播(Broadcast)的具体划分,而是作为组播的 一个典型类型。 图 2 单播物理结构图 2.42.4广播(广播(BroadcastBroadcast) 网络广播是指一个节点同时向相同域中的其它所有节点传输数据包的过程。 组播是一种特殊的广播,其中一组请求收听的选定用户将收到广播。广播传输 通常在局域网(如以太网)中进行,但有时也发生在虚拟局域网(VLAN)中。 IPv6 支持单播(Unicast) 、组播(Multicast)以及任意播(Anycast)三种类 型,IPv6 中没有关于广播(Broadcast)的具体划分,而是作为组播的一个典 型。 生成广播信息的应用程序包括地址解析协议(ARP) 。通过该协议,主机发 送一个地址解析查询到局域网中的所有计算机上,以实现网络 IP 地址的分配。 有些路由选择协议,如 RIP,主要用于支持网络设备“Advertise”网络服务。 网络广播中涉及以下重要概念: 广播域(Broadcast Domain):这是一个限定区域,其中的所有设备都可 以共享信息。换句话说,与网络相连,且负责接收广播的所有设备都是同一广 播域的一部分。在一个共享以太网中,工作站通过共享媒体将帧广播到其它所 有节点。其它节点收听广播,只接收寻址到它们的帧。因此,共享以太网中的 第 5 页 共 25 页 所有节点都属于同一广播域。此外通过虚拟局域网技术可以创建一个虚拟广播 域。 广播地址(Broadcast Address):这是一个特殊地址,当数据包可以寻址 到该地址时,可以帮助所有设备打开和处理信息。例如,MAC 地址,格式为 1xFFFFFFFF 是一种广播地址;IP 地址 255.255.255.255 是通用广播地址。任 何设备都将打开寻址到广播地址的信息,并将它们传送到下一个工作站。 广播风暴(Broadcast Storm):当主机系统响应一个在网上不断循环的广 播数据包或者试图响应一个没有应答的系统时就会发生广播风暴。随着网络数 据包数量的增加,广播风暴可能会引起网络拥塞问题。为防止广播风暴的发生, 需要细心配置网络以阻止非法广播信息的进入。 图 3 广播物理结构图 3 3需求分析需求分析 3.13.1现行业务系统描述现行业务系统描述 随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流 方式如:信件、电报、电话等已经难以满足人们的交流要求,在互联网上即时 的和好友取得联系,已经成为当今社会人们主流的联系方式。两台计算机之间 进行即时通讯、发送文件等交流方式已经成为时代的潮流。因此出现了 QQ、UC 等即时通讯工具。这些即时通讯业务属于基础语音业务外的数据增值类业务, 从范畴来讲属于“消息类”业务,本质是完成对“文字、声音、图像”信息的 传递。同属于消息类的业务还有短信、彩信等,他们之间都存在一定程度的替 代性,同时又各有长短。但不会成为那些大中型企业内部的主要通讯工具,在 企业中要求很简单,能确保快速正常的即时通讯,还要具有很好的安全性,这 样才能提高工作效率,增加企业的效益。 第 6 页 共 25 页 3.23.2现行系统存在的主要问题分析现行系统存在的主要问题分析 目前,像 QQ、UC 等即时通讯工具虽然方便、实用,但是,娱乐功能太多, 有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用 于作为即时通讯、文件共享的专用工具。并且现在用于实现单一的即时通讯、 文件共享的软件真的实在太少,因此不能为那些大中型企业所使用,而且在现 行的系统中主要的问题是:一、在即时通讯系统中由于防火墙、网络速度等原 因难以建立或者速度很慢,IM 服务器还提供消息中转服务,即时消息全部先发 送到 IM 服务器,还要再由服务器转发给对方,所以连接时过多的浪费了网络资 源,并且在服务器忙或与服务器无法连接时,浪费过多时间用于和服务器建立 连接;二、即时通讯工具始终是通过互连网的服务器来传输的,正是这样所以 更有可能会带来遭遇到网络上的许多攻击,如木马,蠕虫等。为企业中的信息 交流带来了很大的安全性问题。 3.33.3提出解决方案提出解决方案 根据企业在内部网络上信息交流的需求,所以本课题就主要针对内部的网 络来设计这样的一个即时通讯系统,本系统是在基于局域网的在 IM 客户端和 IM 服务器之间通讯采用的 UDP 协议和 C/S 软件构架技术上开发的通讯工具,它 在近程的即时通讯时彻底的脱离了远程的服务器,不通过远程服务器来完成实 现通讯,避免了和远程服务器连接时过多的浪费网络资源。并且避免了服务器 忙或与服务器无法连接时浪费过多时间用于和服务器建立连接,同时也为内网 服务增强了许多的安全性,彻底的将通讯工具从互连网上搬到内网中来,这样 一来就不会受到来自互连网的攻击了。这种系统主要是为了方便了大中型企业 在内部即时通讯要求,从而进一步提高工作效率,增加企业的效益。 4 4系统设计系统设计 4.14.1系统总体架构系统总体架构 本系统主要是采用 C/S 结构,并且每个客户端也是作为服务器端的,当系 统发送信息给局域网的用户,主要由单播模块和广播模块来实现,而其中的单 播模块和用户信息模块是具有依赖性的,在接收信息的时候又有两个模块来完 成,一是信息接收的模块,另一个是信息查看的模块。 由此可以看出本系统主要分为两大部分模块:发送模块和接收模块。发送 模块:单播模块,广播模块,用户信息模块,信息记录模块接收模块:接收信 息模块,查看信息模块 有了以上的了解了那让我们来看看系统的架构图: 第 7 页 共 25 页 图 4 系统架构图 4.24.2界面设计界面设计 为了方便用户的操作,我采用比较简单的界面设计,主界面包括广播按钮、 发送按钮、刷新按钮、在线用户显示框、信息输入窗体。其中广播按钮是将信 息窗体中的内容发送到所有的用户;发送按钮是将信息窗体中的内容发送到指 定的用户;在线用户显示框中选取指定的用户和查看用户的信息;刷新是重载 用户列表。 系统主界面 (服务器/客户) 单 播 发 送 广 播 发 送 接 收 信 息 显示用户信息 信 息 写 入 查看历史记录 工 作 组 IP 地 址 用 户 名 第 8 页 共 25 页 图 5 主界面 当有信息传过来时将自动弹出一个信息接收的窗体,窗体包括查看按钮和 关闭按钮还有一个显示对方用户的区域,他们分别是用来打开并查看信息或是 不想查看而关闭的作用。 图 6 信息接收界面 如过你在图 6 中点击了查看按钮,那么将会弹到显示信息查看的窗体上, 在文本区则会显示对方传送过来的信息内容,在查看了之后有个关闭按钮,用 来结束对话框,便可以回到图 5 的界面了。 第 9 页 共 25 页 图 7 信息查看界面 在历史记录的窗体中点击记录文件按钮来选择保存的路径,将会自动生成 一个文本文件来对通讯记录进行保存。 图 8 历史记录 4.34.3系统功能模块设计系统功能模块设计 4.3.14.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。服务器是作 为应用程序实现的,它对客户程序发出的一个简单的命令集进行响应。为实现 第 10 页 共 25 页 服务器,程序将监听 DefaultPort 端口上的广播,并将 TIdUDPServer.Active 设置为 True。 下面是我对 TIdUDPClient 和 TIdUDPServer 组件的设置图: 图 9 TIdUDPClient 组件设置 图 10 TIdUDPServer 组件设置 4.3.24.3.2 用户信息显示功能用户信息显示功能 为了方便用户选取单个用户进行信息发送和查看在线用户的信息,所以设 计了一个 ListView 来进行显示如图 5,在 ListView 中包括了用户名、工作组、 IP 地址。当有用户打开本系统的时候将会向局域网中的所有用户发送一个握手 信息来获取网络中的在线用户信息并添加到列表中显示出来,同时也把自己的 网络资源信息发送给对方,使自己被添加到其他用户的列表中。 其中分别要对网络中的所有的用户名、工作组、IP 地址进行获取,下面来 看一下对于获取这些网络资源的代码部分。 1) 用户名获取代码如下: Function tform1.GetUsers( GroupName : string;List : TStringList) : Boolean; type TNetResourceArray = TNetResource; /网络类型的数组 Var NetResource: TNetResource; Buf: Pointer; Count,BufSize,Res: DWord; lphEnum: THandle; Ind: Integer; Temp: TNetResourceArray; TmpStr:String; 第 11 页 共 25 页 Begin Result := False; FillChar(NetResource, SizeOf(NetResource), 0); /初始化网络层次信息 NetResource.lpRemoteName := GroupName1; /指定工作组名称 NetResource.dwDisplayType := RESOURCEDISPLAYTYPE_SERVER;/类型为服务器(工作组) NetResource.dwUsage := RESOURCEUSAGE_CONTAINER; /已连接机器 NetResource.dwScope := RESOURCETYPE_DISK; /列举文件资源信息 /获取指定工作组的网络资源句柄 Res := WNetOpenEnum( RESOURCE_GLOBALNET, RESOURCETYPE_DISK, RESOURCEUSAGE_CONTAINER, NetResource,lphEnum); If Res NO_ERROR) then Exit; /执行失败 Temp := TNetResourceArray(Buf); For Ind := 0 to Count - 1 do /列举工作组的计算机名称 Begin /获取工作组的计算机名称 tmpStr:=Temp.lpRemoteName; Delete(tmpstr,1,2); Form1.ListBox1.Items.Add(tmpStr); list.Add(tmpstr); Inc(Temp); end; end; Res := WNetCloseEnum(lphEnum);/关闭一次列举 If Res NO_ERROR then break;/执行失败 while true do/列举一个网络类型的所有工作组的信息 begin Count := $FFFFFFFF; /不限资源数目 BufSize := 8192; /缓冲区大小设置为 8K GetMem(Buf, BufSize); /申请内存,用于获取工作组信息 /获取一个网络类型的文件资源信息 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; 第 13 页 共 25 页 3) IP 地址获取代码如下: procedure TForm1.ServerUDPRead(Sender: TObject; AData: TStream;ABinding: TIdSocketHandle); var readbuf: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); /添加对方 IP 1.返回对方 IP 2. 发出 Hand 握手信息 if head=LOGIN then begin recvip:=abinding.PeerIP; recvport:=9000; / 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); handdata(recvip,myname,myworkgroup,recvport); end; /添加对方返回的自己的 ip (对比) if head=REVLOGthen begin / memo1.Lines.Add(revlog recv); RECVPORT:=strtoint(copy(msg,headlen+1,portlen); recvip:=copy(msg,headlen+portlen+1,iplen); recvlog(recvip,recvport); end; 第 14 页 共 25 页 4.3.34.3.3 局域网内实现单播功能局域网内实现单播功能 在本设计中单播发送的按钮为 BitBtn2,主要是通过 IdUDPServer 和 IdUDPClient 组件来编写的,由 client.SendBuffer 语句来发送的,主要是对 局域网内部的同一工作组用户发送信息。 下面是发送按钮的代码部分: procedure TForm1.BitBtn2Click(Sender: TObject); var /myinfobuf:array01023of char; _ToPORT:integer; chatinfo,_ToIP,savelog:string; chatinfobuf:array02030of char; tempItem:TListItem; f:textfile; /处理握手信息 添加对方 ip 返回对方 ip if head=HANDthen 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,recvname,recvworkgroup,recvport); end; /处理握手信息 添加对方 ip 返回对方 ip if head=HANDthen 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,recvname,recvworkgroup,recvport); end; 第 15 页 共 25 页 由于是单播所以需要指定用户,而用户是由 ListView 中显示的,则要对其 进行显示并能选取,通过客服端来让主机服务器响应,实现代码主要如下: Function tform1.recvp2pdata(recvip,recvname,recvworkgroup:string;recvport:integer):string; var minfobuf:array01023of char; minfo:string; tempitem:tlistitem; i,j:integer; begin j:=0; for i:=0 to userlist.Items.Count-1 do begin if userlist.Items.Itemi.Captionmyname then inc(j,1); if j=userlist.Items.Count then 第 17 页 共 25 页 IP 地址进行显示;由工作组进行显示,最后连接到表 Label2 中去。 4.3.44.3.4 局域网内实现广播功能局域网内实现广播功能 在本设计中单播发送的按钮为 BitBtn3,主要是通过 IdUDPServer 和 IdUDPClient 组件来编写的,主要是使用了 client.Broadcast 来对信息进行发 送的,在发送时将会把信息发送给在局域网内部的所有用户包括自己。 下面是发送按钮的代码部分: 4.3.54.3.5 历史信息记录功能历史信息记录功能 为了能让用户对历史的信息进行查看,所以本设计中包含了一个对历史信 procedure TForm1.BitBtn3Click(Sender: TObject); var chatinfo:string; chatinfobuf:array02030of char; f:textfile; begin chatinfo:=format(%-6s%-255s%-1024s,CHAT,myname,memo1.Lines.Text); strpcopy(chatinfobuf,chatinfo); client.Broadcast(chatinfobuf,9000); end; begin tempItem:=UserList.Items.Add ; tempItem.Caption:=myname; if form5.checkbox1.Checked then tempItem.SubItems.Add(myworkgroup); if form5.CheckBox3.Checked then tempItem.SubItems.Add(myname); if form5.CheckBox4.Checked then tempItem.SubItems.Add(recvip); end else exit; end; Label2.Caption:=INTTOSTR(USERLIST.Items.Count); end; 第 18 页 共 25 页 息进行记录的功能,主要是创建一个记事本文件对信息进行复制保存,以下就 是历史信息记录的代码: 5 5系统实施及测试系统实施及测试 5.15.1实施概况实施概况 本设计是基于局域网内采用 C/S 结构的即时通信软件,其主要实现的是单 procedure Tdetailform.RecorBBtnClick(Sender: TObject); begin if SavRecorDia.Execute then begin RecorEd.Text:=SavRecorDia.FileName; end; end; procedure Tdetailform.Button3Click(Sender: TObject); var F:textfile; begin showmessage(RecorEd.Text); assignfile(f,RecorEd.Text); rewrite(F); closefile(F); end; begin if detailform.RecorEd.Text then begin Assignfile(f,detailform.RecorEd.Text); if fileexists(detailform.RecorEd.Text)then append(f) else rewrite(F); writeln(f,=); writeln(f,发往:+_ToIp); if SealCheckBox.Checked then writeln(f,时间:+datetostr(now)+timetostr(now) else writeln(f,时间:+datetostr(now)+timetostr(now); writeln(f,-); writeln(f,SRMemo.Lines.Text); writeln(f,=); closefile(f); end; end; 第 19 页 共 25 页 播和广播功能,还包含了显示用户信息、查看历史信息等辅助功能。本设计是 在是 Microsoft Windows XP 系统上利用编程软件开发的,然后再组建的局域网 中来进行测试和调试工作,所以最少会用到两台或两台以上的电脑并由交换机 组成一个小型的局域网,考虑到一些系统兼容性的问题,所以在内部网络上的 每台计算机上都用的是相同的操作系统,在网络配置方面也是相同的方式。对 于编程软件的选择主要是采用 Delphi7 来编写和编译程序的,因为考虑到 Delphi 是具有可视化的一个编程环境, Delphi 它提供了 500 多个可供使用的 构件,利用这些部件可以快速地构造出应用系统。也可以根据自己的需要修改 部件或用 Delphi 本身编写自己的部件,能提供方便、快捷的 Windows 应用程序 开发环境,本程序也基本是借助与那些组件来编写的。 5.25.2测试方案测试方案 本程序在 Windows XP 操作系统下,使用 Borland Delphi 7 企业版软件作 为开发工具,利用 Delphi7(企业版)集成开发环境中提供的网络通讯组件进 行编程的,代码也是在这个开发环境中编译的,并在组建的局域网中进行系统 测试的。 设计测试的是同在一个局域网中,先将编译好的程序复制到内部网络上的 没台计算机上面,然后都将设计的系统打开运行,这是观察是否能显示所有的 在线用户的信息,如果了防火墙之类的软件正在运行的话,很可能不能正常显 示工作组、IP 等信息,所以最好是关闭防火墙。如图 11: 第 20 页 共 25 页 图 11 显示在线用户 如果能显示出来用户的信息则在其中一台计算机上的信息窗体中输入好准 备发送出去的信息“欢迎使用!” ,如图 12: 图 12 输入发送信息 如果是想发送到整的网络就点击界面上的广播按钮,这时在所有的计算机 上都会弹出一个接收的界面,如图 13: 图 13 接收界面 点击查看按钮则会弹到一个查看信息的界面上,上面会显示出刚才所发送 的信息和来自于谁,如图 14: 第 21 页 共 25 页 图 14 查看界面 如果是想发送给网络中的其中一个用户就先选择要发送的对象再点击发送 按钮,这时就只会在那个指定的用户那里弹出查看的界面了而其他用户则不会 接收到发送来的信息。 要是想对通讯的内容进行记录,则在历史记录窗体上选择保存通讯记录的 路径,点击确认按钮,便会在选择的路径里生成一个文本文件用来保存用户的 通讯记录了,在点击托盘区图标选择查看记录,如图 15: 图 15 通讯记录界面 第 22 页 共 25 页 最后是退出,退出只能点击托盘区的图标来退出,当关闭了其中一个用户 的时候,其他的用户列表中自动会将该用户的用户信息给删除,这表明此用户 已经下线离开了。 5.35.3测试结果测试结果 经过多次在局域网中进行测试,本设计的基本功能都在测试中得到了体现, 下面就是我在整个测试的过程中得到的一些测试结果: 1. 在局域网内能完整传输所发的信息,不会出现信息丢失或乱码等情况 2. 在测试的时候如果开了防火墙很可能不能显示工作组,但并不会影响 到信息的发送和接收 3. 在发送广播信息时是对所有用户发送信息,包括自己也会收到广播信 息 4. 当进入系统后便能自动更新显示在线用户信息,用户下线时能在显示 列表中也能自动删除此用户信息 5. 能对用户在即时的通讯时的通讯信息进行记录,方便用户查看历史的 通讯信息 6. 通过测试还发现了用户只能进行文本格式即时的通讯,不能发送图片 等格式的信息 7. 在发送信息时没有能对信息进行加密后在发送 结结 论论 通过本次课题的研究,认识到即时通讯工具在企业中起到了重要的作用, 本系统实现了显示在线用户信息的功能,能够查看到当前局域网中用户的在线 情况,并且可以对用户的用户名、工作组和 IP 地址的信息进行显示;能保存历 史记录的功能,可以方便用户对历史信息进行查看;还实现了在局域网内部进 行收发单播和广播信息的功能。解决了传统通讯工具需要连接远程服务器来进 行信息转发的局限性问题,这样能够节约网络资源,也保证了在信息交流时的 安全性,减少了病毒及木马的感染率。但是系统还有是存在一些不足的地方存 在:1、只是单一的传输文本信息,还不能对图片格式等进行传输 2、没有针对 信息进行加密发送,这样不能保证所发送和接收的信息百分之百的安全;3、没 有设计用户登录界面,使本系统的使用方面还存在安全问题。但是我会在以后 的工作学习中逐步解决这些问题,不断完善这个系统,使它更具实用性的。 本次课题设计我学到了很多关于网络通讯方面的知识,也认识到自己的能 力,是我从理论走向实践迈出的坚实的一步。从设计分析到设计编写直到具体 实现,在学校所学的理论知识对我有很大的帮助,我也发现了我的很多不足的 第 23 页 共 25 页 地方。总之通过这次毕业设计,我深深体会到,一个好的程序设计人员必须具 有认真、谨慎的作风,坚忍不拔的毅力,并且要不断的向更高的台阶迈进,我 会向着这个方向去努力。 参考文献参考文献 1 刘华.黑魔方 Delphi 基础教程M.北京:清华大学出版社,2004.9。 2 飞思科技产品研发中心.Delphi 网络高级编程M.北京:电子工业出版社,2002.1。 3 施新刚.Delphi 实效编程百例M.北京:人民邮电出版社,2002.1。 4 鲍敏,吴昊.Delphi 网络高级编程M.北京:人民邮电出版社,2001.7。 5 肖建.Delphi 6 编程基础M.北京:清华大学出版社,2002.1。 6 (美)W.Richars Stevens.TCP/IP 详解 卷 1:协议M. 北京:机械工业出版社,2005。 7 (美)Paul Kimmel.Delphi 6 应用开发指南M.北京:清华大学出版社,2002.1。 第 24 页 共 25 页 致致 谢谢 本文是在赵军老师的热情关心和指导下完成的,他渊博的知识和严谨的治 学作风使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我 最衷心的感谢! 在论文完成过程中,本人还得到了其他老师和许多同学的热心帮助,本人 向他们表示深深的谢意! 最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢! 第 25 页 共 25 页 声声 明明
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 化学工业


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!