`

ICE Chat Demo 实例分析

    博客分类:
  • Ice
阅读更多

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 demo

    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

    ice chat demo 实现PULL和POLL模式的聊天程序,值得学习。 是学习ICE的好教程

    ICE 的聊天demo 含有ICE的配置文档

    4. **ICEChat.sln**:这是一个Visual Studio解决方案文件,包含了整个项目的组织结构和依赖关系。开发者可以通过打开这个文件在VS2013中加载和管理项目。 5. **ICEChatClient**:这个可能是客户端应用程序的源代码...

    ICE完整的DEMO

    【ICE完整DEMO详解】 ICE(Internet Communications Engine)是一个面向对象的中间件平台,它提供了一套工具、API和库,用于开发可跨多种异构环境的客户端-服务器应用程序。ICE支持不同编程语言、操作系统和架构,...

    ice同步demo

    【标题】"ice同步demo"涉及的是Interprocess Communication Engine(ICE)框架的同步技术实践,这是一个用于构建分布式系统和网络应用程序的中间件。ICE由ZeroC公司开发,它提供了多种编程语言的接口,如C++、Java、...

    ICEDemo C#版本

    **ICEDemo C# 版本** ICE(Internet Communication Engine)是一种高性能、跨平台的中间件,用于构建分布式系统。它提供了强大的并发模型和高效的网络通信机制,使得开发人员能够轻松地构建可扩展、高可用性的应用...

    Demo_ice.zip_DEMO_Demo_ice_ICE_ICE demo_ice mysql

    本示例“Demo_ice.zip_DEMO_Demo_ice_ICE_ICE demo_ice mysql”提供了一个通过ICE(Internet Communication Engine)接口调用MySQL数据库实例的实践案例,为ICE的初学者提供了一个宝贵的入门教程。 ICE,全称为...

    icechat--a free and open source irc client

    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 ...

    winform ICE异步demo

    【标题】"winform ICE异步demo" 是一个基于Windows Forms(winform)的应用程序示例,它展示了如何使用Internet Communications Engine(ICE)框架进行异步通信。ICE是一款高性能、跨平台的中间件,用于构建分布式...

    ice-3.6.3 eclipse ice通信demo

    总结起来,这个"ice-3.6.3 eclipse ice通信demo"是一个基于Eclipse的ICE通信示例,使用Java 7或更高版本,通过IDE配置、导入ICE库、编写服务端和客户端代码,最终实现服务端与客户端之间的通信。`.classpath`和`....

    ICE通信Demo文档

    ### ICE通信Demo文档知识点解析 #### 一、安装ICE生成工具 为了开始ICE通信的开发,首先需要安装必要的工具。具体包括以下三个安装包: 1. **Ice-3.4.2.msi**:这是ICE核心组件的安装包,包含了ICE的基本运行环境。...

    ice demo ice是很好的网络通讯中间件

    ice demo是很好的学习ice的东西,ice是一个很好的分布式的网络通讯中间件,很好的支持跨平台等各种功能。 ice demo是很好的学习ice的东西,ice是一个很好的分布式的网络通讯中间件,很好的支持跨平台等各种功能。 ...

    ICE-demo2.tar.gz_ICE_linux ICE C++

    标题中的"ICE-demo2.tar.gz_ICE_linux ICE C++"揭示了这是一个与ICE(Internet Communication Engine)相关的示例项目,它已经被打包为一个tar.gz压缩文件,适用于Linux操作系统,并且是用C++编程语言编写的。ICE是...

    ICE客户端与服务端通信Demo

    平台编译环境:VS2017 ICE版本:3.7.7 ICEbuilder:5.0.9 源码中有两套程序: Server:启动服务器,等待连接 。连接后可双方通信 Client:连接服务器,与服务器通讯。 Slice: 手写几个接口即可。

    IceChat:IceChat IRC客户端

    IceChat IRC客户端v9 IceChat是使用WinForms用C#编写的开源IRC客户端。 它已完全发布,但始终在进行开发和改进。 符合 。 IceChat的主要网站是 ,并在上设置了Wiki页面。 IceChat 9.5默认使用.NET Framework v...

    Ice入门完整实例

    【Ice入门完整实例】是一个针对初学者的教程,旨在引导用户了解并掌握Ice中间件的基本用法和开发流程。在本实例中,我们将深入探讨Ice,一个强大的分布式对象框架,它提供了一种高效的、跨平台的方式来构建分布式...

    icedemo实现对象的传输与返回(java)

    在客户端,我们需要创建一个ICE的`Communicator`实例,然后通过它获取服务端的代理,调用`serve`方法,并处理返回的Response对象: ```java public class Client { public static void main(String[] args) { Ice...

    ice包以及一个用ice做的demo

    这个"ice包以及一个用ice做的demo"是为帮助开发者理解并学习ICE的使用而提供的实例。ICE提供了丰富的API和工具,支持多种编程语言,如C++、Java、Python等,使得开发人员可以在不同的操作系统上进行无缝通信。 ICE...

    ice-3.4.1-demos.zip

    ICE 3.4.1的Demo涵盖了身份验证、授权和加密等功能,通过实例解释了如何确保通信的安全性。 7. **远程调用与异常处理** 在Demo中,我们能看到远程方法调用的过程,以及如何处理可能出现的异常。这对于编写健壮的...

    Ice双向通信Demo

    【Ice双向通信Demo】是一个基于Ice(对象代理中间件)技术的示例项目,它展示了如何在客户端和服务端之间建立并实现双向通信。这个Demo包含了服务端(IceConnectServer)和客户端(IceConnect)两部分,旨在帮助...

Global site tag (gtag.js) - Google Analytics