简单的XMPP服务器与客户端交互
由客户端发起
C: <stream:stream to="localhost" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">
服务器开始响应
S:<stream:stream from='localhost' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' id='1959'>
验证请求
C:
<iq id="8AUK4-0" type="get">
<query xmlns="jabber:iq:auth">
<username>2</username>
</query>
</iq>
协商协议
S:
<iq id="8AUK4-0" to="localhost" type="result">
<query xmlns="jabber:iq:auth">
<username>2</username>
<password/>
</query>
</iq>
登录包
C:
<iq id="8AUK4-1" type="set">
<query xmlns="jabber:iq:auth">
<username>2</username>
<password>2</password>
<resource>Spark 2.6.3</resource>
</query>
</iq>
登录成功结果
S:
<iq id="8AUK4-1" from="localhost" type="result"/>
取得好友名单
C:
<iq id="8AUK4-2" type="get">
<query xmlns="jabber:iq:roster"/>
</iq>
返回名单
S:
<iq id="8AUK4-2" to="2@localhost/Spark 2.6.3" type="result">
<query xmlns="jabber:iq:roster">
<item jid="1@localhost" name="张三" subscription="both">
<group>Friends</group>
</item>
<item jid="3@localhost" name="3@localhost" subscription="none" ask="subscribe">
<group>Friends</group>
</item>
</query>
</iq>
C:
<iq id="8AUK4-3" to="localhost" type="get">
<query xmlns="http://jabber.org/protocol/disco#items"/>
</iq>
S:
<iq id="8AUK4-3" to="2@localhost/Spark 2.6.3" from="localhost" type="result">
<query xmlns="http://jabber.org/protocol/disco#items">
<item jid="conference.localhost" name="Chatroom Service"/>
</query>
</iq>
C: 表示client
S: 表示Server
简单的XMPP服务器与客户端交互的更多相关文章
- 游戏服务器与客户端交互,或者与跨服交互都有消息加密方式,为什么不明文传递,加md5校验呢
游戏服务器与客户端交互,或者与跨服交互都有消息加密方式,为什么不明文传递,加md5校验呢
- upd套接字服务器与客户端交互C++代码示范
upd套接字服务器与客户端交互C++代码示范 // vc2_2_4UDPserver_Txwtech.cpp : 定义控制台应用程序的入口点. //服务器端 #include "StdAfx ...
- C# Socket简单例子(服务器与客户端通信)
这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信. 注意:此例子的目的只是为了说明用套接字写程序的大概思路,而不是实际项目中的使用程序.在这个例子中,实际上还有很多问题没有解决,如消 ...
- netty入坑第一步:了解netty和编写简单的Echo服务器和客户端
早期java API通过原生socket产生所谓的"blocking",大致过程是这样 这种的特点是每次只能处理一个请求,如果要实现多个请求并行,就还要分配一个新的线程来给每个客户 ...
- (转)C# Socket简单例子(服务器与客户端通信)
本文转载自:http://blog.csdn.net/andrew_wx/article/details/6629721 这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信. 注意:此 ...
- (转)初学Git及简单搭建git服务器和客户端
终于搞定,mac自己作为git服务器,mac也是客户端,如何免登 从另外一个linux服务器的上传公钥得到提示 ssh-copy-id -i ~/.ssh/id_rsa.pub git@192.168 ...
- 最简单的socket服务器与客户端
服务器: //服务器 #include <stdio.h> #include <netinet/in.h> #include <unistd.h> #include ...
- python一个简单的web服务器和客户端
服务器: 当客户联系时创建一个连接套接字 从这个连接接收HTTP请求(*) 解释该请求所请求的特定文件 从服务器的文件系统获取该文件 并发送文件内容 ...
- python写一些简单的tcp服务器和客户端
代码贴上,做个记录 TcpClient # -*- coding:utf-8 -*- import socket target_host = "127.0.0.1" #服务器端地址 ...
随机推荐
- 17-list,字典使用练习
randint(a,b)包括 [a,b]中随机, 包含a,b range(n)= 0,1,2,3....n-1 chr() 数字转字符: chr(65) 得到 :A ord()字符转数字: ord( ...
- 27-水池数目(dfs)
水池数目 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 南阳理工学院校园里有一些小河和一些湖泊,现在,我们把它们通一看成水池,假设有一张我们学校的某处的地图,这个地 ...
- js失去焦点触发
onblur="displayRest($(this))"
- 编写高质量代码改善C#程序的157个建议——建议92:谨慎将数组或集合作为属性
建议92:谨慎将数组或集合作为属性 数组或集合作为属性会引起这样一个问题:如果属性是只读的,我们通常会认为它是不可用改变的,但如果将只读属性应用于数座或集合,而元素的内容和数量却仍旧可以随意改变.如下 ...
- 编写高质量代码改善C#程序的157个建议——建议80:用Task代替ThreadPool
建议80:用Task代替ThreadPool ThreadPool相对于Thread来说具有很多优势,但是ThreadPool在使用上却存在一定的不方便.比如: ThreadPool不支持线程的取消. ...
- WCF 学习笔记
Windows Communication Foundation (WCF) 是用于构建面向服务的应用程序的框架.借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点.服务终结点 ...
- linux安装x264 ffmpeg
1. 安装yasm 2. 安装x264 3. 安装ffmpeg 安装网上很多例子,以下是我主要参考的两篇博客: http://www.cnblogs.com/lidabo/p/3987378.html ...
- C和C++中的异常处理
1.简介 许多的编程新手对异常处理视而不见,程序里很少考虑异常情况.一部分人甚至根本就不考虑,以为程序总是能以正确的途径运行.譬如我们有的程序设计者调用fopen打开一个文件后,立马就开始进行读写操作 ...
- model.find(options)
options {Object} 操作选项,会通过 parseOptions 方法解析 return {Promise} 返回单条数据 查询单条数据,返回的数据类型为对象.如果未查询到相关数据,返回值 ...
- Vue--axios:vue中的ajax异步请求(发送和请求数据)、vue-resource异步请求和跨域
跨域原理: 一.使用axios发送get请求 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 & ...