`
青出于
  • 浏览: 12824 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

通信总结之三:XMPP

阅读更多

之前的服务器与客户端的通信过程中,双方都是直接发送信息内容,并默认以回车符结尾,这样的通信方式(也可以算作一种协议)所包含的信息过于简单与贫乏。没有包含信息的类型(登录、验证、私聊等)的信息,也不能包含发信人,收信人的信息,这只能在简单群聊服务器中使用。如果在比如QQ等这些较为复杂的聊天环境下就显得信息难以处理。

所以我们要通过制定一定的协议来扩充通信中信息所包含的信息量的大小。这里使用的是xml协议来定义通信信息的格式。Xml格式有点类似于html,但与html的区别在于xml的标记元是可以自定义的,而html的标记元则受限于解析工具的设置范围。这也取决于两种格式的主要作用。Xml侧重于体现信息所体现的意义即信息的本身,而html则重于表示信息的格式即信息的表现方式。

基于流程可以先把消息形式粗略分为9种:登录消息,登录应答消息,注册消息,注册应答消息,上线、下线消息,聊天消息,用户列表消息,还有由服务器自己发送给客户机的消息。

自定义的协议如下

 

1、登录消息:客户机登录时发送用户名密码给服务器

<m>

<type>login</type>

<name>name</name>

<pwd>pwd</pwd>

</m>

 

2、登录应答消息:服务器返回客户的登录请求是否成功

<m>

<type>loginRsp</type>

<state>登录结果</state><!--0:成功,其他:失败-->

</m>

 

3、注册消息:客户机发送注册请求给服务器

<m>

<type>reg</type>

<name>name</name>

<pwd>pwd</pwd>

</m>

 

4、注册应答消息:服务器返回客户的注册请求是否成功

<m>

<type>regRsp</type>

<state>注册结果</state><!--0:成功,其他:失败-->

</m>

 

5、聊天消息:

<m>

<type>chat</type>

<sender>senderName</sender>

<reciever>recieverName</reciever>

<msg>msg</msg>

</m>

 

6、上线消息:

<m>

<type>onLine</type>

<user>name</user><!--上线者名字-->

</m>

 

7、下线信息:

<m>

<type>offLine</type>

<user>name</user><!--下线者名字-->

</m>

 

8、用户列表信息:

<m>

<type>budyList</type>

<users>all,user1,user2,...</users>

</m>

 

9、服务器给客户机消息:

<m>

<type>serverMsg</type>

<user>name</user>

<msg>msg</msg>

</m>

协议制定好之后就是对协议的解析。Xml的很简单,xml中标记元的作用就是确定信息的位置及其信息类型,并对其进行相应的处理。由于所有可能出现的标记元都是已知的(如果完全按照自己制定的协议的话),那么只要使用String.indexOf()String.subString()等方法来查找和截取信息即可。

0
7
分享到:
评论

相关推荐

    xmpp相关

    3. **流(Stream)**:XMPP通信是基于TCP连接的双向数据流,由打开、数据传输和关闭三个阶段组成。 4. **组件与扩展**:XMPP允许添加自定义组件来扩展其功能,例如,多用户聊天(MUC)、文件传输、VoIP等。 5. **...

    xmpp.rar_VC IM XM_XMPP japper_xmpp _xmpp protocol_xmpp协议详解

    **XMPP:可扩展消息和出席协议** XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,主要用于实现即时消息(IM)和在线状态通知。它由IETF(互联网工程任务组)制定,并在RFC 6120...

    XMPP 通讯中文翻译文档

    **核心标准**:XMPP的核心特性定义在RFC3920中,这是目前最可靠的中文翻译文档之一。该文档定义了XMPP如何使用XML元素在任意两个网络端点之间近实时地交换结构化信息。 #### 二、XMPP协议概述 - **即时消息与出席*...

    XMPP协议工具openfire_3_10_3

    XMPP(Extensible Messaging and Presence Protocol,可扩展消息与存在协议)是一种基于XML的开放标准通信协议,主要用于实时双向通信,如即时消息(IM)、语音及视频通话、文件传输等。该协议最初由Jabber项目开发...

    xmpp,the Definitive Guide

    ### XMPP:终极指南 #### 一、简介与概述 《XMPP:终极指南》是一本全面介绍XMPP(可扩展消息处理协议)及其在实时应用中的应用的权威书籍。XMPP是一种基于XML的开放标准协议,用于实现即时消息(IM)、在线状态通知...

    XMPP DEMO android4.0通过

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准通信协议,主要用于即时通讯(IM)和在线状态管理。这个“XMPP DEMO android4.0通过”项目显然是一个针对Android 4.0(Ice Cream ...

    JAVA实现XMPP客户端和服务器

    总结,使用Java实现XMPP客户端和服务器,涉及到的知识点包括XMPP协议原理、Java编程、网络通信、XML处理、服务器部署以及客户端UI设计。通过该项目,开发者可以深入理解和实践即时通讯系统的构建,提升相关技能。

    inkboard2.tar.gz_xmpp

    总结,XMPP协议为inkboard2提供了强大的实时通信基础,使其能够在多种场景下提供高效、安全的协作体验。了解并掌握XMPP的基本原理和技术细节,对于开发和优化类似inkboard2这样的应用至关重要。同时,随着技术的发展...

    XMPP相关资料文档

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,被广泛应用于即时通讯、在线状态管理和多方通信等领域。以下是对标题和描述中提到的知识点的详细说明: 1. **XMPP核心协议**: ...

    XMPP Protocol 协议

    XMPP(可扩展消息与存在协议)是一种基于XML的即时通信协议,源于开源项目Jabber,现已被IETF(互联网工程任务组)标准化。XMPP设计的主要目标是提供一个灵活且可扩展的框架,用于实时通讯,如聊天、文件传输、语音...

    XMPP正式RFC标准3920

    安全性是XMPP协议设计时的重点之一。除了TLS和SASL外,还包括了如何保护消息内容、防止恶意攻击等内容。 #### 15. IANA事项 本文档还定义了一些与互联网编号分配机构(IANA)相关的事项,包括端口号、XML命名空间...

    xmpp webrtc

    总结来说,"xmpp webrtc"项目为开发者提供了一个利用XMPP进行信令控制,结合WebRTC实现iOS端实时音视频通话的参考实现。通过深入研究这个项目,开发者可以了解到如何整合这两项技术,以及在实际应用中需要注意的关键...

    XMPP协议整理

    #### 三、XMPP通信架构 尽管XMPP本身并不依赖于特定的网络架构,但它通常被认为是基于客户端-服务器模型的一种实现。在这种架构下,客户端通过TCP连接与服务器通信,而服务器之间也可以通过TCP连接进行通信。 以下...

    XMPP-RFC3921(中文)

    #### 三、总结 通过深入解析XMPP-RFC3921(中文)文档,我们不仅了解了XMPP协议的基本概念和核心功能,还学习了如何在实际应用中正确使用XMPP协议。无论是在个人通讯还是企业级应用中,掌握这些知识点都是非常重要的...

    XMPP协议之RFC6120

    在1.2节中回顾了XMPP的历史,1.3节总结了其功能概要,而1.4节定义了在文档中使用的技术术语。 文档还详细描述了XMPP协议的架构,其中: - 全球地址指的是XMPP网络中的每个实体都有一个全局唯一的地址,通常呈现为...

    类似QQ的xmpp协议聊天

    总结,通过使用XMPP协议和Android开发技术,我们可以构建一个类似QQ的聊天应用,提供丰富的即时通讯功能。在实践中,我们需要关注协议的正确实现、用户体验的设计,以及数据安全和隐私保护等方面,以打造一个稳定、...

    xmpp-demo,xpmm-ios

    它构建在TCP/IP协议之上,确保了消息的可靠传输。 - **Jabber服务器**:XMPP网络的核心是Jabber服务器,它负责处理用户连接、认证、路由消息以及管理用户的状态。 - **客户端与服务端**:客户端通过TCP连接到...

    rss-gateway:XMPP RSS 网关组件

    XMPP是一种开放的即时通讯协议,基于XML,被设计用于实时通信和数据传输,包括文本聊天、文件传输、多人会议等。XMPP网络由多个服务器组成,客户端通过连接到这些服务器来与其他用户交流。由于其开放性和扩展性,...

Global site tag (gtag.js) - Google Analytics