五 15
Rei技术 XMPP, 编程
6. QTalk 客户端的设计
在此,将我编写的 xmpp 客户端命名为 QTalk ( Qt + Gtalk)。
(blog 特有内容: 开源了,放在 http://github.com/chloerei/qtalk)
由于选择了 Gtalk 服务器作为服务端,qxmpp 库作为程序的 XMPP 的通信模块,所以 QTalk 编写的主要工作在于功能与用户界面的实现。
QTalk 的预期功能如下:
- GTalk 帐号登录
- 列出联系人名单,获取联系人 VCard 资料、状态信息
- 向已有联系人收发纯文本消息
- 向已有联系人收发文件
- 增删联系人
- 人性化设置
QTalk 的运行截图见附录 一。
6.1 QTalk 结构
QTalk 的结构可分为通信模块和用户界面两大块,层次结构如图四所示: More
五 14
Rei技术 Qt, XMPP, 编程
5. 选择用于编写 XMPP 客户端的工具
为了深入了解 XMPP 是否足够用于开发一个开放、功能丰富的即时聊天工具,我决定写一个 XMPP 的客户端聊天程序。服务端直接连接 Google Talk 服务器。客户端编程基于 C++/Qt 和 qxmpp 库。最终程序将可以使用 Gtalk 帐号登录,并与其他 Gtalk 用户通信。
用于编写 XMPP 客户端的工具如下:
- Google Talk 服务器
- Qt 编程框架和工具链
- qxmpp 程序库
5.1 Google Talk (Gtalk) 服务器的优势
Google Talk 是 Google 公司于2005年8月24日推出的一款IP 电话及即时通讯的服务。Google Talk 使用开放的 XMPP 协议。得益于 XMPP 的开放性,使用 Google Talk 服务不一定要通过官方客户端。Google Talk用户端仅支持 Windows (2000、XP、Server 2003、7)。[13]
实际上从 Gtalk 发布开始,XMPP 才真正走入大众的视野。以 Google 公司为后盾,Gtalk 的服务器拥有安全和稳定的口碑。
此次编程实践不涉及服务端的编程,而是遵循 XMPP 协议,让自己编写的客户端与 Gtalk 服务器通信,通过 Gtalk 服务器转发客户端的数据包。不涉及服务端编程,也可以使我专注与客户端的功能和操作性的优化上。
5.2 Qt 编程框架简介
Qt (发音同cute) 是一个跨平台的C++应用程序开发框架,有时又被称为 C++ 部件工具箱。Qt 被用在 KDE 桌面环境、Opera、OPIE、VoxOx、谷歌 Earth、Skype 和 VirtualBox的 开发中。它是诺基亚 (Nokia) 的 Qt Development Frameworks 部门的产品。[14] More
五 12
Rei技术 XMPP, 编程
4. XMPP 扩展
XMPP 的核心部分是一个轻量级的协议,不足以满足一般即时聊天应用的需求。 XMPP 的社区在核心协议的基础上定义了众多的扩展协议,用以实现电子名片、二进制传输等功能。
4.1 通过 vcard-temp 获取电子名片
电子名片 (个人资料) 是聊天程序中常见的功能。通过电子名片,用户可以查看联系人除了 JID 地址外的其他信息,如:昵称,全名,个人网站 URL 等。
XMPP 的扩展之一 [XEP-0054] vcard-temp [9] 实现了电子名片。要在聊天程序中支持电子名片,需要客户端和服务端都实现 vcard-temp 扩展。知名的 XMPP 服务器大都支持 vcard-temp 扩展,如 jabber.org, gtalk 等。
4.1.1 请求电子名片
vcard-temp 扩展规定的电子名片访问规则如下:
客户端:
<iq from='stpeter@jabber.org/roundabout'
id='v3'
to='jer@jabber.org'
type='get'>
<vCard xmlns='vcard-temp'/>
</iq>
该查询使用 get 类型的 Iq 包请求 jabber.org 服务器返回 jer 用户的 vcard 数据。 More
Older Entries
近期评论