原文转自 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. javascript (六)DOM

    学习后的总结: DOM:document object model 关于DOM的简介:http://www.w3school.com.cn/htmldom/dom_intro.asp 本文说的是HTM ...

  2. NOIP模拟赛 麻将

    [题目描述] 众所周知,麻将是我们国家的国粹.这段时间,小D也迷上了麻将这个老少皆宜的游戏. 小D觉得这些不同规则的麻将太麻烦了,所以他集合了很多种麻将规则创造出了一套D麻将.下面是D麻将的几个特点: ...

  3. MySQL数据库主从切换脚本自动化

    MySQL数据库主从切换脚本自动化 本文转载自:https://blog.csdn.net/weixin_36135773/article/details/79514507 在一些实际环境中,如何实现 ...

  4. crond定时操作 crontab

    * * * * *  分别表示 分钟  小时  日  月  星期(0-6) 30 17,28,19 * * *  或 30 17-19 * * *  在每天的17-19小时半点时刻执行 30 8-18 ...

  5. Python基础——类

    创建类 class people: '帮助信息:dsafdaf' #所有实例都会共享的 number=100 #构造函数,初始化的方法,当创建一个类的时候,首先会调用它 def __init__(se ...

  6. Python学习day01

    age = 23 count=0 while count<3: guess_age = int (input("My age:")) if age ==guess_age: ...

  7. servlet 作用

    什么是Servlet Servlet是一个Java编写的程序,此程序是基于Http协议的,在服务器端运行的(如tomcat),是按照Servlet规范编写的一个Java类. 在BS架构中,早期的Web ...

  8. HBase0.94.2-cdh4.2.0需求评估测试报告1.0之一

    hbase是bigtable的开源山寨版本.是建立的hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它介于nosql和RDBMS之间,仅能通过主键(row key)和主键的r ...

  9. JQuery中根据属性或属性值获得元素(6种情况获取方法)

    根据属性获得元素 1.比如要获取页面p标签中属性有id的元素 $("p[id]").css("color","red"); 根据属性值获得元 ...

  10. JavaScript简单继承

    很多C#或C++开发人员习惯使用继承来开发项目,所以当他们想学习JavaScript语言时,第一个问题一般是:“我怎么在JavaScript中使用继承?”. 实际上JavaScript使用了一种不同于 ...