XMPP客户端库Smack 4.0.6版开发

XMPP客户端库Smack 4.0.6版开发

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

三、Smack库的特征
1、极度简单易用,API功能强大
发送一条文本消息给某个用户只需几行代码:

AbstractXMPPConnection connection = new XMPPTCPConnection("mtucker", "password", "jabber.org");
connection.connect();
connection.login();
Chat chat = ChatManager.getInstanceFor(connection)
		.createChat("[email protected]", new MessageListener(){
	public void processMessage(Chat chat, Message message){
		System.out.println("Received message: " + message);
	}
});
chat.sendMessage("Howdy!");

2、隔离了底层数据包组装的复杂性,自然有相应的库来完成这些功能。Smack提供了更智能的高层构造,比如Chat类和Roster类,这样开发会更富有效率。
1)无需熟悉XMPP的XML格式,甚至都不需要了解XML
2)提供了简单的M2M通信
Smack让开发者可以对每条消息都设置大量的属性,属性中还可以包含Java对象。
3)基于Apache许可证的开源代码,这意味着你可以把Smack放入你自己的商业软件中。

四、Smack库的组成
Smack库可以内嵌到任意的Java应用程序中。Smack库有数个JAR文件组成,非常具有灵活性。
1、smack-core.jar
提供了核心XMPP功能。都是XMPP RFC规范定义的XMPP特性。
2、smack-extensions.jar
支持许多由XMPP Standards Foundation定义的扩展(XEP)功能。包括群聊、文件传输、用户搜索等等。
以后可查看文档《扩展手册》:
https://github.com/igniterealtime/Smack/blob/master/documentation/extensions/index.html
(目前还是无效的)
3、smack-experimental.jar
支持许多由XMPP Standards Foundation定义的体验性(XEP)功能。其API和功能特性都被认为是不稳定的。
4、smack-legacy.jar
支持许多由XMPP Standards Foundation定义的遗留(XEP)功能。
5、smack-bosh.jar
支持BOSH通信(XEP-0124规范定义的)。此代码被认为处于Beta阶段。
6、smack-jingle.jar
支持Jingle。此代码很老,目前处于无维护的状态。
7、smack-resolver-dnsjava.jar
支持对DNS SRV记录的解析,主要用于那些不支持javax.naming API的平台。
8、smack-debug.jar
用于协议流量的增强型GUI调试器。当调试模式开启后,如果它在类路径下,它会自动被使用。
以后可查看文档《调试模式》:
https://github.com/igniterealtime/Smack/blob/master/documentation/debugging.html
(目前还是无效的)

五、Smack的配置
Smack的初始化过程涉及到2阶段的调用。
1、初始化系统属性
通过SmackConfiguration类初始化所有的系统可访问属性,这些属性都是通过getXXX方法取回属性值的。
2、初始化启动类
任意类如果继承了SmackInitializer接口后,都可以在调用initialize()方法后得到初始化,这意味着得到初始化的类在启动后都是活动的。
如果没有继承SmackInitializer接口,那么要实现初始化,必须要放置一个静态代码块来实现——他在类装载时会自动执行。

初始化是通过配置文件来完成的。默认情况下,Smack会载入Smack JAR文件中内嵌的配置文件(它位于org.jivesoftware.smack/smack-config.xml)。这个指定的配置文件包含了一系列需载入初始化的类列表。所有的管理器类型的类都需要被初始化,这些管理器类就包含在上面所说的初始化列表中。

时间: 2024-10-13 10:58:01

XMPP客户端库Smack 4.0.6版开发的相关文章

XMPP客户端库Smack 4.0.6版开发之三

XMPP客户端库Smack 4.0.6版开发之三 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 六.建立连接的例子 XMPPConnection类用于创建一个到XMPP服务器的连接,代码例子如下: // 创建一个到jabber.org服务器的连接 AbstractXMPPConnection conn1 = new XMPPTCPConnection("username", "password", "jabb

XMPP客户端库Smack 4.0.6版开发之五

XMPP客户端库Smack 4.0.6版开发之五 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 四.使用Chat消息通信 来回收发消息是即时通信的核心功能.尽管单条消息是以包的形式发送和接收的,通常还是把他视为聊天的消息字符串,使用org.jivesoftware.smack.Chat类. 1.Chat类 一个聊天Chat会在两个用户之间创建一个消息线程(通过线程ID).下面的代码片段演示了怎样创建一个新聊天,然后向用户发送一条文本消息: //假设

XMPP客户端库Smack 4.0.6版开发之六

XMPP客户端库Smack 4.0.6版开发之六 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 五.名单Roster和在线状态Presence 名单可以让你跟踪其他用户是否在线,而且名单可以让你把用户组织到群组,比如朋友群或工作群.而其它的即时通信IM系统则把名单Roster视为好友列表.联系人列表等等. 1.名单条目 名单中的每一个用户都由RosterEntry来表示,它包括: 1)一个XMPP地址(比如"[email protected]&qu

XMPP客户端库Smack 4.0.6版开发之一

一.Smack库概述 Smack是一个开源.易用的XMPP/Jabber客户端库,它使用Java语言开发,由Jive Software开发. Smack的优点是编程简单. Smack的缺点是其API并非为大量并发用户设计,每个客户都要1个线程,占用资源相对较,因此用Smack做模拟测试时,1台机器只能模拟有限(数千个)客户. 截止2014年11月27日,Smack库已经发展到4.0.6版. 最新的好消息是Smack在4.1.0版后将直接支持Android系统,而无需再使用以前的Smack移植版a

XMPP客户端库Smack 4.0.6版

XMPP客户端库Smack 4.0.6版 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Smack库概述 Smack是一个开源.易用的XMPP/Jabber客户端库,它使用Java语言开发,由Jive Software开发. Smack的优点是编程简单. Smack的缺点是其API并非为大量并发用户设计,每个客户都要1个线程,占用资源相对较,因此用Smack做模拟测试时,1台机器只能模拟有限(数千个)客户. 截止2014年11月27日,Smac

XMPPclient库Smack 4.0.6一个版本的开发

XMPPclient库Smack 4.0.6版开发之中的一个 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Smack库概述 Smack是一个开源.易用的XMPP/Jabberclient库,它使用Java语言开发,由Jive Software开发. Smack的长处是编程简单. Smack的缺点是其API并不是为大量并发用户设计,每一个客户都要1个线程,占用资源相对较,因此用Smack做模拟測试时,1台机器仅仅能模拟有限(数千个)客户. 截止

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

合肥程序员群:49313181.    合肥实名程序员群:128131462 (不愿透露姓名和信息者勿加入) Q  Q:408365330     E-Mail:[email protected] smack介绍: 上一篇我介绍了服务端openfire整合现有系统用户,当服务器整合并且搭建完成后,需要做的工作就是写客户端聊天工具了.要么基于pc要么基于移动(Android和IOS).所以这一篇我们一起学习一下smack库,smack是用java写的开源客户端XMPP (Jabber)库,在老版本

java在线聊天项目0.9版 实现把服务端接收到的信息返回给每一个客户端窗口中显示功能之客户端接收

客户端要不断接收服务端发来的信息 与服务端不断接收客户端发来信息相同,使用线程的方法,在线程中循环接收 客户端修改后代码如下: package com.swift; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; impo

尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。

从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Client,直接解压,设置Path就ok了.具体设置如下:1.下载32位Oracle InstantClient 2.将Oracle InstantClient解压到某目录 3.打开PL/SQL,在perference里面设置OCI Library和Oracle_home,例子如下: