基于Delphi的即时通讯系统的设计
扫描二维码
随时随地手机看文章
高速公路要提供安全、快速、高效的服务,离不开监控系统的辅助管理,通过监控系统采集到的全面和实时的信息,高效地进行路径诱导,从而提高道路的通行能力,以及对突发事件应急指挥的响应速度叫在此需求引导之下,管理和运营服务对联网监控、全程监控的需求也更加迫切。随着车流量的增加,高速公路上大范围突发事件频频发生,紧急情况的交通应急指挥问题日益凸显,单一路段服务的监控系统正朝为多条路径的路网服务的方向转化。作为连接各中心的桥梁,信息报送系统成为了监控中心的关键。随着科技水平的飞速发展,网路通讯应用在各个平台,但大多数网络通讯都需要借助Internet上的服务器,因此在为用户带来便捷的同时也给用户造成了许多问题,如遭遇到网络攻击、传播的病毒、破坏防御系统等等。所以为了方便内部网络的信息交流,比如高速公路网监控系统的总中心和分中心之间的沟通,基于局域网的即时通讯工具的开发成为一种趋势。在2012年12月全国交通运输工作会议中指出,要组织实施部省路网管理与应急处置平台建设和联网工程,实现部路网中心与京津冀辽四省市路网中心互联互通,指出要加快推进信息化建设,推进具备条件的国家高速公路网区域贯通,发挥路网整体效益,加快部路网监测与应急处置中心建设,推进省级路网中心示范工程和部省平台联网建设,建立基本覆盖重要国省干线公路出行信息服务平台。这表明信息管理工作在突发事件应急管理工作中具有极其重要的地位。
1系统总体设计的理论基础
1.1C/S软件架构
C/S结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销叫目前,大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件,因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。
C/S工作模式
Client和Server(Client/Server或客户/服务器模式)常常分别处在相距很远的两台计算机上。Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。
传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
C/S结构的优点
C/S结构的优点是C/S架构的界面和操作可以很丰富,很多工作可以在客户端处理后再提交给服务器,故能充分发挥客户端PC的处理能力,而且客户端响应速度快。其缺点主要有以下几个:
第一,c/s结构只适用于局域网。随着互联网的飞速发展,移动办公和分布式办公越来越普及,这需要系统具有扩展性。这种方式远程访问需要专门的技术,同时要对系统进行专门的设计来处理分布式的数据。
第二,客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。特别是有很多分部或专卖店的情况,不是工作量的问题,而是路程的问题。还有,系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
第三是对客户端的操作系统一般也会有限制。
B/S与C/S的区别
C/S和B/S并没有本质的区别,B/S是基于特定通信协议(HTTP)的C/S架构,是特殊的C/S架构,而B/S的提出也是为了满足瘦客户端和一体化客户端的需要。相比而言,B/S架构可以节约客户端更新、维护等的成本,却要受到通信协议的制约。
1.2用户数据报协议(UDP)
UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
1.2.1UDP的概述
UDP协议的主要作用是将网络数据流压缩成数据报的形式[4]。UDP报头由4个域组成,其中每个域各占用2个字节,具体如下:
源端口号:UDP协议使用端口号为不同的应用保留其各自的数据传输通道。数据发送一方(可以是客户端或服务器端)将UDP数据报通过源端口发送出去。因为UDP报头使用两个字节存放端口号,所以端口号的有效范围是从0~65535。一般来说,大于49151的端口号都代表动态端口。
目标端口号:数据接收一方则通过目标端口接收数据。
数据报长度:数据报的长度是指包括报头和数据部分在内的总的字节数,从理论上说,包含报头在内的数据报的最大长度为65535字节。不过,一些实际应用往往会限制数据报的大小,有时会降低到8192字节。
校验值:UDP协议使用报头中的校验值来保证数据的安全。如果某个数据报在传输过程中被第三方篡改或者由于线路噪声等原因受到损坏,发送和接收方的校验计算值将不会相符,由此UDP协议可以检测是否出错。
1.2.2UDP与TCP的区别
UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地抓取来自应用程序的数据,并尽可能快地扔到网络上。由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等。通常人们把UDP协议称为不可靠的传输协议。TCP协议中包含了专门的传递保证机制,当数据接收方收到来自发送方的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其他信息,否则将一直等待,直到收到确认信息为止。
既然UDP不如TCP可靠,选择它的原因是什么呢?原因就是UDP具有TCP所望尘莫及的速度优势。虽然TCP协议拥有安全保障功能,但是在实际执行的过程中会使速度受到严重影响,提供安全的同时它会占用大量的系统开销。反之,UDP由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。
广播(BroadCast)
广播的优点是网络设备简单,维护简单,布网成本低廉;由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。
广播的缺点是无法针对每个客户的要求和时间及时提供个性化服务;网络允许服务器提供数据的带宽有限,客户端的最大带宽等于服务总带宽。
Indy介绍
InternetDirect(Indy)是一组开放源代码的Internet组件,涵盖了几乎所有流行的Internet协议。Indy用Delphi编写,被包含在Delphi6、Kylix1和C++Builder6及以上各个版本的Borland开发环境中。Indy使用了阻塞式Socket调用方式。阻塞式访问更像是文件存取。当你读取数据,或是写入数据时,读取和写入函数将一直等到相应的操作完成后才返回。本设计使用Indy来实现系统的广播等功能。
2系统的主要界面设计
2.1系统登录界面的设计
用户通过输入正确的用户名与密码可以进入系统的主界面。登录界面用的主要组件介绍如下[1'2]:
Image:实现界面图片的插入。
Lable:实现“用户名”、“输入密码”“确认密码"的标签显示。
Edit:实现输入框功能。
Button:"确定"、"取消"按钮,在Button键的Onclick事件中编写代码。点击按钮时,即可以分别激发相应的事件。
图1所示是登录界面的效果示意图。
图1 登录界面的效果图
2.2主界面的设计
类似于QQ界面,主界面的设计用来显示联系人,并且进行联系人的增加、删减等。主要组件介绍:
MainMenu:主菜单控件Delphi7提供了两种菜单控件:主菜单(MainMenu)和快捷式菜单(PopupMenu),它们都在Standard选项卡中。用鼠标双击MainMenu图标,打开菜单设计器,然后进行菜单项的编辑。主界面中选用此组件是为了使各功能菜单在未使用的状态下隐藏起来,从而做到界面的简洁和规划整齐。从高速公路网监控系统的实际应用出发,设置了三项主功能菜单,即联系人、关注(路段)、信息记录。
ToolBar:工具栏控件。使用工具栏是为了用户的操作方便,通过工具栏中的按钮可以直接调用菜单中最常用的命令,然后通过ImageList控件中的图片文件为ToolBar中增加的按钮添加图片。通常的按钮只有图片没有文字,为了给用户对按钮实现的功能提供相关的提示信息,可通过设置每个按钮的Hint属性来实现。
Combobox:组合框控件。主界面选用Combobox控件来实现联系人的列表显示。将控件的Style属性设置为csDropDown,既可以在编辑框中输入,也可以通过下拉列表选择项目。
Edit:实现输入将要查找、添加、删除的联系人名称。
图2所示是主界面的效果图。
图2 主界面的效果图
2.3会话界面的设计
会话界面用于实现双方消息的收发、提醒、消息记录的
保存和删除等功能。图3所示是其会话界面的效果图。
图3 会话界面的效果图
3系统测试结果
分别运行系统的客户端和服务端。在客户端界面上,点击“查找”按钮,弹出一个GroupBox"精确查找”,输入所在局域网的IP地址、端口号(port)以及用户名。点击“连接”按钮,在消息输入框中输入将要发送的消息,然后点击“发送”按钮,消息就会同时显示在客户端以及服务端的消息显示框内。为了使消息的查询功能方便执行,和消息一同显示的还有发送消息的时间。
4结语
事实上,在服务端界面上也可执行相同操作。运行结果表明,本系统可以实现局域网内即时消息的接收功能。
20211020_61702d0fd533b__基于Delphi的即时通讯系统的设计