原文转自 http://blog.csdn.net/educast/article/details/31359835

1、gloox

Ans. 老牌库,推荐
gloox是一个稳定功能完整的XMPP客户端库, 使用ANSI C++编写, 使用它编写标准客户非常容易, 并能将Jabber/XMPP功能集成到现有的应用程序中, gloox遵循GNU GPL许可协议, 支持商业许可.
特点:
1. 易于使用
2. 可扩展性好
3. 平台无关性(支持多种操作系统)
4. 完整的开发文档
5. 完全支持XMPP核心协议及几乎所有的XMPP IM协议
6. 支持TLS和SASL安全认证
7. 支持名册管理
8. 支持隐私名单
9. 支持SRV查找
10.支持服务器认证方式
11.支持xml:lang
 

2、Iris

Ans. Qt的,慎用
Iris是基于Qt/C++库编写的XMPP/Jabber协议库,目前它仍然处于开发阶段,但已经支持了许多重要的功能。设计目标是全力支持 XMPP协议的正式草案, 库功能强大且易于使用的,由于大量使用Qt的结构和数据类型, 对于创建客户端,服务器和其他组件非常有用.
特点:
1. 支持XMPP核心协议包括:
1) DNS服务查询
2) SSL/TLS安全认证
3) SASL加密认证
5) 早期的jabber:iq:auth login
6) 资源绑定
7) 支持HTTP连接及Socket5,http代理
8) 高级对象流处理
2. 支持的XMPP-IM协议
1) 消息交换
2) 出席广播与接收
3) 名册管理
4) 订阅功能
3. JEP扩展
1) 版本时间要求
2) 服务发现
3) Jabber账号注册
4) 密码更改
5) 代理注册
6) VCards
7) 基本组聊天
8) S5B直接连接
9) 文件传输
开发计划:
1. 完成支持XMPP核心协议的基本服务
2. 确保XMPP的核心完全匹配草案
3. 编写XMPP的核心文档API
4. 撰写完整XMPP的即时通讯的API
5. 其他重要规格:x:data, MUC等等
 

3、QXmpp

Ans. Qt的,慎用
QXmpp是一个跨平台的C++ XMPP客户端开发库, 它是基于Qt库开发的.
QXmpp是非常直观,易于使用, Qt是唯一的第三方依赖库, 用户需要一个有C ++和Qt的基础知识(Qt的信号与槽和数据类型)及开发经验。基础的TCP套接字和XMPP协议的RFC ( RFC3920和RFC3921 )已被封装到类和函数 必要时可以扩展, 所以,用户不需要处理这些细节。
说明文档比较少, 没找到!!!
 

4、oajabber

Ans. 很久没更新,单人开发,慎用
oajabber是一个支持XMPP/Jabber协议的C++库, 可扩展及灵活性好,它的目标是实现最完整的XMPP/Jabber协议的C++库, 这在很大程度上依赖于有oapr对线程和网络的处理及Xerces-C对XML的解析.
 

5、iksemel

Ans. 接口太复杂,慎用
iksemel是一个为Jabber应用而设计的XML(可扩展标记语言)解析器库。 
1. 高度便携,可在所有的POSIX环境和Windows(via mingw)环境下构建
2. 适用于嵌入式系统。代码小,高度模块化,可以削减不必要的部分。内存使用量低,解析器速度相当快。
3. 提供的SAX,DOM和XMPP协议分析器。
4. 支持TLS和SASL安全认证
5. 仅支持UTF-8编码
6. 完整的文档及示例 
 

6、loudmouth

Ans. C的,接口太多,慎用
loudmouth是一个用C/Glib编写的轻量级jabber客户端库, 易于使用和扩展, 可跨平台.
 

7、libstrophe

Ans. C的,有C++封装,可以考虑
libstrophe是一个XMPP协议的客户端和组件通信的C库。我们的目标是建立一个库,它是便携式的,可用的快捷,可靠,有据可查,并充分实现的XMPP规范
 

8、Libjingle

Ans. GTalk的库,可以考虑
  Libjingle - Google Talk Voice及 P2P 的交互操作函数库
  Libjingle是Google提供的C++组件集,它为Google Talk的点对点通讯与语音呼叫功能提供交互操作性。组件包包括了Jingle和Jingle-Audio的google实现的源代码,它们是XMPP标准的推荐扩展,目前试验版可用。
  我们发布此代码是为了让消费者们在实时通讯工具的选择和操作性更多些。Google的源码发布基于Berkeley协议,也就是说你可以把它们合并到商业或非商业的软件中并发布。
  此外关于Google Talk的互操作性,函数库里有许多通用组件如P2P栈,它可用来创建各样的通信和协作应用程序。我们希望看到更多组织能够使用这项技术建立创新的的应用程序。
  下面是函数库各个组件的描述。你可以使用它们中的任一或是全部组件。
  base -低级可移植的功能函数
  p2p - p2p栈,包括了与XMPP挂钩的客户端和基础p2p函数。
  session - 电话呼叫指令以及可变点对点流
  third_party - 用于其他功能的非google组件
  xmllite -XML解析器
  xmpp - XMPP engine
 

9、libpurple

Ans. Pidgin的库,推荐
libpurple is intended to be the core of an IM program. When using libpurple, you'll basically be writing a UI for this core chunk of code. Pidgin is a GTK+ frontend to libpurple, Finch is an ncurses frontend, and Adium is a Cocoa frontend.

C/C++ XMPP/Jabber 客户端类库对比/点评 (转)的更多相关文章

  1. 即时聊天IM之三 XMPP协议客户端库的和Android端框架概述

    合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:egojit@qq.com smack ...

  2. Converse.js – 开源的 XMPP 聊天客户端

    Converse.js 是一个运行在浏览器的免费和开源的聊天客户端.它可以集成到任何网页.类似于 Facebook 的聊天,它也支持多用户聊天室.Converse.js 可以连接到任何可访问的 XMP ...

  3. 如何将github上的微信客户端类库能够通过composer工具下载

    我将自己开发的微信客户端类库放到了github上面去了. 然后我在我的项目里面添加了一个composer.json文件 内容如下 { "require": { "weix ...

  4. Appium 客户端类库

    Appium 支持以下语言的客户端类库: 语言 Ruby Python Java JavaScript PHP C# Objective-C 锁定注意,一些方法类似 endTestCoverage() ...

  5. WPF一步步开发XMPP IM客户端1:入门

    [起因&目标] 因为工作原因接触openfire服务端和spark客户端开发,主要是基于openfire扩展开发了针对企业用途的服务器插件,还开发了各个平台上的客户端(Windows\mac\ ...

  6. 采用MQTT协议实现android消息推送(2)MQTT服务端与客户端软件对比、android客户端示列表

    1.服务端软件对比 https://github.com/mqtt/mqtt.github.io/wiki/servers 名称(点名进官网) 特性 简介 收费 支持的客户端语言 IBM MQ 完整的 ...

  7. Swoole 协程 MySQL 客户端与异步回调 MySQL 客户端的对比

    Swoole 协程 MySql 客户端与 异步回调 MySql 客户端的对比 为什么要对比这两种不同模式的客户端? 异步 MySQL 回调客户端是虽然在 Swoole 1.8.6 版本就已经发布了, ...

  8. 几个开源XMPP Android客户端简单比较

      想做个基于xmpp的即时通讯工具,服务端已经基本成型了.当然需要客户端需要配合,PC端基于spark进行改造,手机端先从Android入手(IOS估计一个人是搞不过来了). 原本Android开发 ...

  9. iOS平台XML解析类库对比和安装说明

    在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...

随机推荐

  1. 01_13_Struts_默认Action

    01_13_Struts_默认Action 1. 配置struts默认Action <package name="default" namespace="/&quo ...

  2. 使用mfc CHtmlView内存泄露解决方法

    第一步,谷歌有文章说CHtmlView部分api使用BSTR没释放: 解决方法是重写一下接口: CString GetFullName() const; CString GetFullName() c ...

  3. 重温经典之赫夫曼(Huffman)编码

    先看看赫夫曼树假设有n个权值{w1,w2,…,wn},构造一个有n个叶子结点的二叉树,每个叶子结点权值为wi,则其中带权路径长度WPL最小的二叉树称作赫夫曼树或最优二叉树. 赫夫曼树的构造,赫夫曼最早 ...

  4. october安装过程

    下载代码 composer create-project october/october myoctober 准备好数据库, create database october; 配置环境于安装 php ...

  5. LNMP的环境搭建

    新装的Linux 机器,还没有来得及安装网站环境,这篇文章就是记录一下自己安装LNMP的一般步骤. 之前在Laravel视频中看过这段的讲解,后来也试着安装过,基本的命令不算是熟练掌握,所以还要看看之 ...

  6. python中文件操作的基本方法

    在python中对一个文件进行操作,分为三大步:打开,操作,关闭 首先创建一个文件hello,里面内容为hello world 一.打开一个文件 1.#open(‘文件名或文件路径’,‘操作模式’,文 ...

  7. debian使用ibus

    $ sudo apt-get install ibus ibus-pinyin 点击右上角的键盘图标,设置拼音输入法

  8. Spring boot 中Spring data JPA的应用(一)

    最近一直在研究Spring Boot,今天为大家介绍下Spring Data JPA在Spring Boot中的应用,如有错误,欢迎大家指正. 先解释下什么是JPA JPA就是一个基于O/R映射的标准 ...

  9. Http协议——基本概念

    一.浏览网页的过程 用户输入一个url,浏览器根据url给web服务器发送一个Request,web服务器接收到Request后进行处理,并返回浏览器一个Response,可以响应一个静态页面或者图片 ...

  10. Hive学习笔记(三)-- DML和DDL操作

    01-Hive表的DDL操作--修改表 创建一个分区表并加载数据 查询数据 修改表 加载数据 查询一下 另外一个命令查询表的分区 如何删除一个分区呢 查询一个,分区被删除了 修改表名 查询改名的新表的 ...