论文部分内容阅读
当今流行的即时通讯系统有MSN、Yahoo Massager、ICQ、QQ、Google Talk等,但是这些IM系统基本都定位于个人用户,面向最广泛的群体,在商业应用中如果想要给本行业客户提供一个便利、集中的沟通和联系平台则这些IM就显得力不从心。本文所描述即时通讯系统来源于我们给一家商务旅游公司开发的IM系统。用户主要针对导游、旅行社、宾馆、个人等。提供旅游询价报价、即时通讯、语音聊天、P2P视频聊天、P2P资料传送、客户分类管理、专业用户群聊等功能。和普通的IM系统所不同的是,这个系统上的用户都是旅游行业内的专业客户,所以不论是宾馆、旅行社还是导游或有旅游意向的个人用户都可以方便地在本IM系统中找到对应的服务和客户群,进行旅游咨询、询价报价等操作。本文设计和实现了客户端和服务端程序框架,以及整体即时通讯网络协议。客户端程序的当前版本已经商用并实现了上述的所有功能。 本文首先列出了项目的需求和现实背景。第2章分析系统的架构设计,服务端的架构本文针对系统用户连接多的特点采用了多线程并发服务的模式并提出如下设计:①根据RFC2778把服务端分成Notification Service、Switchboard Service 2个互相独立的服务模块,可以配置到不同的服务器上提供多用户连接分布式服务,降低了对单个服务器的硬件要求,分流了用户连接。②针对用户的安全性和扩展性要求,设计了MD5和随机数组合加密的方式来保证用户数据的安全。同时在网络协议中加入版本自动升级功能来实现系统扩展和定制。③对于异构网络P2P连接建立的问题,提出通过服务端交互节点信息的方式来穿透防火墙和NAT最终建立P2P连接。 商用IM系统的关键技术在于大规模用户环境下服务端的稳定和客户端在各种软件系统环境和网络条件下的系统健康度上。本文第3章对系统实现所需的关键技术进行探讨并确定方案,首先在服务端的设计上针对半连接和死连接消耗服务器资源的问题提出2种解决方案:定时清楚缓冲池中死连接和定时发送数据包来消除半连接,从而保证了服务端程序的稳定。其次视频和语音的原始数据量巨大不适合网络传送,本文引入了H263和G711协议用程序实现视频和音频数据的压缩和解压缩并在网络上做P2P传送。本文第4章是系统的实现与应用,为了在不同版本的Windows下做到通用,我们在实现中尽量采用了通用的API和类库,并设计了一个客户端崩溃处理模块来收集系统出错时客户端所在机器的堆栈信息和操作系统信息,根据这些信息来协助本IM系统的改进。 最后,本文总结了本系统的特点和应用前景,并提出了可能改进的发向。