【 colorado 】
ICE Chat Demo 是 ZeroC 推荐的 ICE 综合实例,它实现了聊天室的基本功能。服务器端采用了C++;客户端采用了C++ / Java / C# / …… 。采用 Java Swing 和 C# WPF 演示了ICE在GUI界面下的调用方法,采用ICE提供的异步方法,可以使用户使用ICE远程功能,又能获得界面体验,而不被阻塞。
本人阅读了 ChatDemo 项目的C++源代码,分析了程序的流程和构造。读者可以从 ICE Chat Demo 项目官方网站 获得更多相关知识。
ChatDemo 服务器端采用两种模式:推送(Push)模式和轮询(Polling)模式。
推送模式:客户端在服务器上注册回调函数,然后在服务器获取消息时,调用客户端回调函数,向它发送消息。这种方式采用了Glacier2实现会话(session),程序的运行,必须要采用client -> glacier2router -> server 的部署方式。读者可以自已实现会话,就不需要Glaicer2了,但自定义会话比较麻烦,要考虑会话过期,及会话对象的回收等问题。采用这种方式的缺点是,对跨防火墙的访问,通常肯定要在C/S两端总是保持连接,一旦连接断开,必须重新连接——在本程序中没有实现自动重连接的功能。
轮询(Polling)模式:客户端定期调用服务器的远程接口,访问服务器存储的消息。这样服务器必须有缓冲池缓冲必要的消息,程序采用了std:vector 存储用户登录、离开及消息做为缓冲区。在极大迸发量情况下,必须要考虑缓冲区是否会溢出。这里由于客户端定期访问,每次访问都会清除存储的缓存,因此没有考虑缓冲区溢出的情况。
下面用简要的图示说明客户端与服务器之间的交互执行。需要读者对代码有些了解,对照查看。
一、推送模式:
1、通讯建立过程
2、实际通讯过程:
二、轮询模式:
1、通讯建立过程
2、实际通讯过程
本程序的分析还比较粗浅,可能还有不当之处,另外对于配置还未涉及。今后有时间继续增补、修改。
我感觉对该项目进行学习是掌握ICE基础知识非常有效的手段,希望与读者共勉。
相关推荐
ice chat demoice chat demoice chat demoice chat demoice chat demoice chat demoice chat demoice chat demoice chat demoice chat demoice chat demoice chat demoice chat demoice chat demo
ice chat demo 实现PULL和POLL模式的聊天程序,值得学习。 是学习ICE的好教程
ICE完整的DEMO
ICE C# Demo 例子中有ICEGrid, ICEBox ,IceStorm等。
ICE 的聊天demo,里面含ICE的安装和到vs2013里面的配置
IceChat is a popular IRC (Internet Relay Chat) Client that can be used in Windows 95/98/ME/2000/XP/2003/Vista and also Windows 7. It has been tested on 64bit versions of XP, Vista and Windows 7 as ...
简单入门的ICE同步学习demo,适合新手入门。
通过ICE接口调用mysql数据库实例,ICE入门最佳
ice demo是很好的学习ice的东西,ice是一个很好的分布式的网络通讯中间件,很好的支持跨平台等各种功能。 ice demo是很好的学习ice的东西,ice是一个很好的分布式的网络通讯中间件,很好的支持跨平台等各种功能。 ...
难得的ICE的winform版本的异步调用demo,自己辛苦专研的适合刚刚研究ICE的人借鉴。
IceChat IRC客户端v9 IceChat是使用WinForms用C#编写的开源IRC客户端。 它已完全发布,但始终在进行开发和改进。 符合 。 IceChat的主要网站是 ,并在上设置了Wiki页面。 IceChat 9.5默认使用.NET Framework v...
基于ICE3.4.2 C#平台开发ICE通信,帮助文档
包含ICE的应用实例,编译测试通过,内含C++,C#2个版本,供大家参考
一个关于ice的demo,下载下来导入Eclipse直接运行就可以看到效果了
使用eclipse jdk1.7以上,jar包已经存在。先启动service,在启动client即可
Ice完整实例,详细介绍了一个完整的简单的Ice应用开发过程
ICE异步调用Demo(slice源码和C++源码) 服务器和客户端adm ami函数调用与异步分发 vs2008+ice3.4.1
使用java实现的一个ice demo,请求参数是Request对象,返回参数是Response对象
Eclipse下分布式计算环境构建与开发ICE
ice方面的例子,包括服务端和客户端,在linux下编译成功