`
victor-yang
  • 浏览: 19429 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

XMPP通信小结(1)

阅读更多

        我们想制做一个比较完美的IM系统(即时通信系统),那么就需要将系统的整个信息交互的流程从头到尾的梳理清楚。然要进行通信,用“文本”+“\r\n”作为一句话的形式就太不规范了,不规范的信息可能导致未知的错误,那么该怎样规范起来呢?

      下面对XMPP通信协议和IM交互流程两部分进行小结。                                                           


                                        (一)XMPP通信协议



       通信,指两者通过某种行为或媒介进行的信息交流与传递,即使用某种媒质,将信息从某方准确安全传送到另方。很显然,“文本”+“\r\n”这样规定是一句话的形式是不安全的,例如:String s = "hello" + "\r\n" + world !";

    String msg = s + "\r\n";

      其中s是一句话,但是msg可能会显示成两句话的形式,这就与我们的原意有出入,所以我们又必要制定一套新规则,也就是使用协议。



     协议是指两个软件之间进行通信所必须共同遵守的规定或规则。制定协议要注意三点:

             (1)语法:数据与控制信息的结构或格式;

       (2)语义:需要发出哪种控制信息,完成哪种动作以及做出哪种响应;

     (3)同步,事件实现顺序的详细说明。

      制定了协议之后, 使用协议的每个人都必须了解协议,并且预先知道所要完成的所有的步骤; 使用协议的每个人都必须同意并遵循协议; 协议每一步必须明确定义,并且不会引起误解。

        


        XMPP通信协议便可以解决问题。XMPP ( The Extensible Messaging and Presence Protocol)可扩展通讯和表示协议,XMPP是一种基于XML的协议,它继承了在XML环境中灵活的发展性。不要担心XML(Extensible Markup Language即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。用他,我们可以自己定义标记语言。比如:我们可以定义<msg>标明了一条完整的消息,即<msg>和</msg>之间包含的是一条完整的消息;定义<sender>标明了发送者的名字,即<sender>和</sender>之间包含的是发送者的姓名。

 

 

        整个过程就像是将 要发送的消息安装协议进行包装,对方接受后进行 解包装,从而使对方安全准确获得有效信息。我们可以这样定义消息是登陆消息还是聊天消息,例:

 

<msg>
    <type>login</type>
    <name>用户名</name>
    <psw>密码</psw>
</msg>

 <msg>

    <type>chat</type>
    <sender>用户名</sender>
    <reciver>密码</reciver>
    <text>文本消息内容</text>
</msg>

 

      这样,通过XMPP协议,自定义标记语言,规定规范的消息结构,软件相互间的交流就非常规范了。

 

 

                                         (二)流程

          无论是这个项目还是其他的,流程都非常重要。流程图之于程序就如同提纲之于文章。梳理流程,我认为需要从两方面着手,考虑六个问题。

           其一,先做什么,接着做什么,最后做什么;                                                                                   其二,是谁做了什么事,传递了什么信息给谁产生了什么结果。           

当分析清楚具体的流程后,整个程序的框架便搭建好了,同时,消息的结构也就可以确定了。至于代码,“翻译”一下就实现了。

1
4
分享到:
评论
1 楼 witcheryne 2011-07-21  
你们用什么服务器和客户端?
基于OpenFire?

相关推荐

    基于XMPP的即时通信程序

    本项目“基于XMPP的即时通信程序”着重于使用XMPP(Extensible Messaging and Presence Protocol)协议来构建这样一个系统。XMPP是一种开放标准的协议,最初由Jabber项目开发,现已被IETF标准化,广泛应用于多种实时...

    XMPP.zip_XMPP即时通信_aioxmpp_xmpp _xmpp qq_即时通讯

    1. **身份验证**:XMPP支持多种身份验证机制,如Plain、DIGEST-MD5、SCRAM-SHA-1等,确保了通信的安全性。 2. **资源绑定**:每个客户端连接到服务器后,可以绑定一个资源标识,例如"手机"或"桌面",允许同一用户在...

    XMPP通信协议原理探索.rar

    XMPP通信协议原理探索

    xmpp通讯协议demo

    1. **XML流**:XMPP是基于XML的数据流协议,所有的交互都是通过XML文档的形式发送的。这种设计使得XMPP具有良好的可读性和扩展性,可以方便地处理复杂的消息结构。 2. **客户端-服务器架构**:在XMPP系统中,客户端...

    基于XMPP的即时通信实现代码

    本项目“基于XMPP的即时通信实现代码”提供了一个完整的解决方案,涵盖了用户注册、添加好友、删除好友以及实际的通信过程。 首先,我们需要了解XMPP的基本原理。XMPP基于XML流协议,通过TCP连接传输数据。它包括三...

    XMPP即时通信 协议

    1. **可扩展性**:XMPP基于XML,允许通过定义新的XML元素和命名空间来扩展协议,以适应不断变化的通信需求。这使得开发者能够轻松地添加新功能,如文件传输、位置共享等。 2. **分布式架构**:XMPP设计为分散式的...

    基于XMPP协议的Android即时通信应用项目源码

    1. **理解XMPP协议原理**:学习XMPP的底层工作方式,包括XML流的解析和构建,以及如何处理连接、认证和消息传递。 2. **Smack库使用**:深入研究Smack的API文档,了解如何创建连接、发送和接收消息、管理用户状态等...

    xmpp之即时通信客户端swing试作型

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准协议,用于实时通信和在线状态管理。在本文中,我们将深入探讨如何使用Smack库创建一个简单的XMPP即时通信客户端,该客户端采用Java ...

    android基于xmpp即时通信-高仿QQ

    在Android平台上实现基于XMPP(Extensible Messaging and Presence Protocol)的即时通信系统,可以让你创建一个类似QQ的应用,实现用户间的实时消息传递、在线状态显示等功能。以下是对这个主题的详细解析: 一、...

    XMPP DEMO android4.0通过

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

    xmpp协议说明ppt

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,最初源自开源项目Jabber。这个协议主要用于即时消息传递(IM)和在线状态(Presence)的探测。XMPP的设计理念是开放、可扩展,...

    即时通信XMPP协议

    即时通信XMPP协议,全称为可扩展消息出席协议(Extensible Messaging and Presence Protocol),是一种基于XML的开放标准,设计用于实现实时通信和状态管理。该协议最初由Jabber开源社区于1999年开发,后来在2002年...

    XMPP与MINA

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的实时通信协议,广泛应用于即时通讯、VoIP、协作软件等场景。它提供了丰富的扩展机制,允许开发者添加自定义功能。而MINA(Multipurpose ...

    基于XMPP的即时通信demo asmackDemo

    在本资源中,我们关注的是基于XMPP(Extensible Messaging and Presence Protocol)协议的即时通信实现,名为"asmackDemo"。XMPP是一种开放标准,它基于XML流,被广泛用于构建实时通讯应用,包括聊天、VoIP、协作和...

    XMPP-RFC3920中文

    **XMPP (可扩展消息和出席协议)** 是一种基于XML的实时通信协议,起初由Jabber开源社区创建,后来成为Internet Engineering Task Force (IETF) 的即时消息和出席信息技术的一部分。RFC 3920是XMPP的核心协议文档,...

    android的XMPP客户端

    在Android平台上实现XMPP(Extensible Messaging and Presence Protocol)客户端是一项常见的任务,因为XMPP是一种广泛使用的即时通讯协议,尤其适用于构建实时通信应用,如聊天、视频通话等。本篇文章将深入探讨...

    XMPP 核心 (内附XMPP实例)

    1. **协议架构**:XMPP基于客户端-服务器架构,允许用户通过连接到XMPP服务器进行通信。这种设计支持分布式系统,可以处理大规模的并发连接。 2. **XML流**:XMPP的数据传输基于XML流,这意味着所有的通信信息都...

    xmpp协议介绍,XMPP体系架构

    XMPP(可扩展消息处理现场协议)是一种基于XML的实时通信协议,最初源自开源项目Jabber。它的设计目的是用于即时消息(IM)服务和在线状态检测。XMPP的核心概念是构建在TCP/IP协议之上的XML流,使得数据在客户端和...

Global site tag (gtag.js) - Google Analytics