24 信息科学 2科01 菰1霸 ()年第9期 即时通信系统架构设计 沈爱明 (合肥学院电子系,安徽合肥230601) 摘要阐明系统所采用UDP协议的制定原则和方法,兼顺当前国内外主流的网络实时通信软件的系统功能和项目需求,提出系统解决方 案,完成系统的逻辑设计、消息格式没计和系统客户端、服务器端两大模块的总体设计 关键词通信系统;UDP协议;MVC设计模式;SOCKUDP组件 中图分类号TN 文献标识码A 文章编号1673—9671一(2010)101—0024—01 1即时通信的概念 的效率。模型包含核心功能和数据,视图向用户显示数据,控制器处理  ̄0u7,通信是一种以网络为基础的实时通信方式,通过通信系统建立 用户输入,视图和控制器共同构成用户接口,变更传播机制确保用户接 网络虚拟社区,为异地、联网的用户提供实时有效和方便快捷的在线交 f1和模型间的一致。在系统中,业务逻辑不发生变化,用户界面根据用 流、互传文件、语音对话及进行视频会议等交流。是PzP模式应用的一 户执行操作的变化f面变化。 大热点,具有以下特点: 2)系统开发方法。采用面向对象的开发技术,面向对象软件开发 1)操作简便。对于使用者而言,只要具有一般的计算机操作能力 以类、类集合作为基本单位,类具有层次结构,可以继承,所有对象都 就能掌握。 用类来表示,对象之问通过传递消息构成相互之间的联系,多个对象各 2)在用户间相互传递即时消息,消息格式可以是多元化的。用户 司其职,相互协作以完成目标,使软件代码可重用性高、可维护性好, 可以使用计算机、手机等不同类型的通信终端,以文字、语音、视频等 并且具有良好的消息机制。系统应用组件技术,把底层的对象集合打成 多种形式进行沟通。 包,组成功能“插件”。在即时通信系统的开发中,对于通用模块进行 3)网络效应明显,有着巨大的用户群体。 提取,封装成DLL(动态链接库),实现更高程度上的代码重用。系统 4)用户可以获取自身和其他用户的状态变迁通告,即时通信的个 中所有的Du放在BIN文件夹下,使用时通过引用,实现各模块共享。 人联络信息保存在服务提供商的系统上,因此可以在世界任何一台与 4即时通信系统功能设计 Internet连接的计算机上使用即时通信软件,不用担心原来的个人资料会 1)系统逻辑设计。在系统中,服务器是客户端活动的中介,提供 丢失。 客户端信息的集中注册认证和必要的安全检验,记录用户列表信息,用 2即时通信系统通信协议的制定 于辅助客户端之间建立连接,系统中服务器只是起到桥梁的作用,负责 即时通信系统作为最初版本,在设计制『没有单独开发自己的协议格 记录当前网络上的客户端用户列表。客户端每一个上线的用户都要到服 式。客户端系统设计访问服务器的方式是利用UDP/IP ̄讯协议与密码保 务器进行注册,并且从服务器获得其他在线用户的列表,当上线用户收 护的方式登入,取得相关信息,并利用UCP/IP通讯协议将信皂反馈回客 到其他在线用户的信息后,就可以和那个用户进行通信,这时就不会通 户端,在客户端与客户端之间直接采用UDP数据报协议作为底层通信协 过服务器。当有用户退出系统时,它会通知服务器,服务器再把这一消 议,使用C#中的Socket ̄的派生类UDPCHNET实现底层通讯。 息告诉给所有在线用户。无论是服务器还是客户端都维护一个在线用户 1)采用UDP协议的原因。①UDP传输速度快,开销小,适合即时 的列表,通过这个用户列表,用户就可以和其他用户进行通信。 通信的需要。f}1于在传输数据报前不用在客户与客户端之间建立一个连 2)消息格式设计。系统通过设置不同种类的消息,实现不同的功 接,且没有超时重发等机制,因此,速度更快,便于客户端之间的直接 能,根据消息的种类接收方判断发送方发送的是什么,想要做什么, 通讯。②音频和视频数据传输的需要。UDP: ̄基于无连接的协议,它能 并且显示在不同的窗体中,因此消息的格式设计是系统的最主要工作之 够消除生成连接的系统延迟,对于强调传输性能而不是传输完整性的应 一。客户端根据用户不同要求,向服务器发送各种类型的请求,然后等 用最适用。在即时通信系统中的音视频通信就是对传输要求实时性高, 待服务器的响应,之后从服务器上得到数据,显示给用户。客户端人数 具有严格的传输时延。如果采用TCP协议的话,音频、视频数据通 没有,程序为了处理每个客户端的信息使用了多线程机制,这样多 过IP网络进行传输,在IP网络中,传输的数据必须被封装成IP分组,一 客户端间通信互相不受到影响。 旦某一分组出错或丢失而被重新传输,必然导致传输时延大大增加,不 3)系统模块设计。在模块设计里,将系统分成两大模块:服务器 能保证实时性。③广播和组播的需要。UDP小但支持一对一的连接,而 端和客户端分别进行设计。①服务器端模块。通过分析具体需求设计类 且也支持一对多的连接,可以使用广播的方式多地址发送,向子网上的 关系图,可以根据具体消息的不同进行处理,同时对不同的事件进行处 所有设备发送信息,也可以使用组播的方式同时向网络上的多个设备定 理,以完成服务器端的实现。在服务器端,系统需要维护一个用户列 向发送信息,而TCP仅支持一对一的通信。在即时通信系统中的群发和 表,每个列表存储多个用户,可以对这个表进行添加、修改、查询、删 组播使用比较频繁,群发信息较多。④UDP传输的数据有消息边界,传 除的操作。服务器端口还需要管理各类与服务器有关的消息,如登录请 输协议把数据当作一条的消息在网上传输,接收端一次也只能接收 求、客户端状态改变等不同类型的消息,不但可以接收,还可以发送, 发送端发出的一个数据包,把数据及时显示上去。⑤仓库内部网络状况 所以设计一个SOCKUDP组件,将UDP通信的操作封装到里面,专门用来 较好。各驻防点之间是光纤骨干网,各驻防点内部是10/100M自适应的 发送、接收信息,在视图类中调用它即可。②客户端模块。同样通过分 网络环境,并且网络上的信息流量较少,基本不存在网络拥堵现象,传 析具体需求。为完成客户端的实现,根据客户端与客户端、服务器端与 输的可靠性还是有很高的保证的。 服务器端的具体消息不同进行相应处理,客户端主要管理各类与本身有 2)传输可靠性保证。由于使用uDP协议进行通讯,所以要自己控制 关的消息,如文件传输请求、视频通信请求等不同类型的消息,因此也 其通信的可靠性:发送方每发送一个数据,接受方接受到数据后,会发 必须设计一个SOCKUDP组件,将UDP通信的操作封装到里面,负责信息 回一个响应信息,发送方在一个超时时间内,收到响应信息,就表示发 的接收和发送,需要时在视图类中调用即可。在客户端,系统也维护一 送数据成功,若没有收到,就表示发送失败,会按用户指定的次数N,重 个用户列表,每个列表存储多个用户,可以对这个表进行添加、修改、 试N次,如果N次都失败,就返回发送数据失败。发回来的确认信息也可 查询、删除的操作。 能丢失,但确认信息很短,丢失的机率会小一些,是一个折中的办法。 参考文献 3即时通信系统解决方案 【1]乇家华.软件工程,沈阳:东北大学出版社[MI 2005. 1)系统设计模式。系统采用MVC设计模式,MVC设计模式使软件 【2]萨师煊.王珊数据库系统概论 j版)【M]_]E京:高等教育出版社,2002. 在键壮性、代码复用和结构方面具有优势,它会大大提高软件后期开发 §骏,郑逢斌,等.c#网络应用高级编程【M】.北京・人民邮电出版社,2007