smack是什么?具体百度一下。我的理解也不深,我理解其实就是XMPP协议的实现。都是浮云,一切都是工具。
首先还是下载smack,我下载的是smack_3_2_0.tar。这个包里有四个jar文件。
首先创建一个java工程。创建一个lib文件夹,把这四个jar包放到lib中,添加到编译路径中。
目录接口如下:

怎么图片还还没传上来。哎。
创建一个TestSmack.java类。具体代码如下:
package org.yangzc.smack;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.filter.PacketFilter;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.Packet;
public class TestSmack {
public static void main(String[] args) throws XMPPException {
ConnectionConfiguration config = new ConnectionConfiguration("127.0.0.1", 5222);
XMPPConnection connection = new XMPPConnection(config);
XMPPConnection.DEBUG_ENABLED = true;
connection.connect();
connection.login("admin", "admin");
// ChatManager chatManager = connection.getChatManager();
// chatManager.addChatListener(new ChatManagerListener(){
// @Override
// public void chatCreated(Chat chat, boolean arg1) {
// chat.addMessageListener(new MessageListener(){
// @Override
// public void processMessage(Chat arg0, Message arg1) {
// System.out.println(arg1.getBody());
// }
// });
//
// }
// });
connection.addPacketListener(new PacketListener(){
@Override
public void processPacket(Packet arg0) {
System.out.println(arg0);
}
}, new PacketFilter(){
@Override
public boolean accept(Packet arg0) {
return true;
}
});
IQ iq = new IQ(){
@Override
public String getChildElementXML() {
StringBuilder buf = new StringBuilder();
buf.append("<query xmlns=\"com:im:group\"/>");
return buf.toString();
}
};
connection.sendPacket(iq);
// Chat chat = chatManager.createChat("yangzc", new MessageListener(){
// @Override
// public void processMessage(Chat arg0, Message arg1) {
// System.out.println(arg1.getBody());
// }
// });
// chat.sendMessage("hello World!!!");
// BufferedReader cmdIn = new BufferedReader(new InputStreamReader(System.in));
// for(;;) {
// try {
// String cmd = cmdIn.readLine();
// if("!q".equalsIgnoreCase(cmd)) {
// break;
// }
// chat.sendMessage(cmd);
// }catch(Exception ex) {
// }
// }
connection.disconnect();
System.exit(0);
}
}
测试:启动openfire服务端,添加插件到openfire中。运行这个例子。可以看到,smack和openfire的插件通信成功。
总结:
这里比较关键的一句话时是:buf.append("<query xmlns=\"com:im:group\"/>");这句话指定了这个消息是发动到那个命名空间中。
只有发送到openfire插件对应的命名空间中openfire插件才可以正确接收。
当初在这里费了好大的功夫。至此openfire插件和smack的通信实现算是告一段落。剩下的工作就是xml了,不用说了吧,很简单的。
明天写什么呢?应该在研究一下androidpn。简单看了一眼,好像是android领域的服务器推送。推动就那些吧,推推拉拉的。

- 大小: 11.8 KB
分享到:
相关推荐
Openfire是基于XMPP的服务器,提供了一个强大且可扩展的架构,使得开发者可以轻松创建聊天、协作和其他实时通信应用。 本文将深入探讨如何使用Smack库,一个Java实现的XMPP客户端库,来连接到Openfire服务器并进行...
我们介绍了 XMPP 协议、IM 软件、Spark、Smack 和 Openfire 的基本概念,并讨论了如何使用插件机制来新增客户端和服务器端的功能。通过这篇文章,我们希望能够帮助开发者更好地理解基于 XMPP 的 IM 软件开发。
这个压缩包提供的内容是关于如何在Java环境中使用Smack库与Openfire服务器进行交互的示例代码,特别适合开发者快速了解和集成即时通讯功能。 首先,Openfire服务器提供了用户管理、群组、聊天室等多种功能,它基于...
Openfire是基于XMPP标准的服务器软件,支持实时通信和协作。版本3.10.2提供了稳定的服务,包括安全的SSL/TLS连接、多用户聊天室、用户管理和监控等。当Android客户端连接到Openfire时,它们之间将通过XMPP协议进行...
【Android代码-基于openfire和smack的安卓xmpp客户端】是一个项目,它实现了使用XMPP协议在Android设备上创建一个客户端应用。XMPP(Extensible Messaging and Presence Protocol)是一种实时通信协议,常用于实现...
IM,即时通讯,如QQ、MSN Messenger和Gtalk,是网络上广泛使用的通信工具,而Gtalk就是基于XMPP协议的实例。 Openfire是XMPP服务器的实现,用Java编写,提供基础的IM服务。它支持用户连接管理、消息路由和群组聊天...
【WebIM(Openfire+Spark+Smack)】是一个在Java领域实现即时通讯(IM)的解决方案,以其稳定性、安全性和高效性而受到推崇。该方案由三个主要组件构成:Openfire作为服务器端,Spark作为客户端,而Smack则负责实现...
本教程将探讨如何利用Openfire服务器和Smack库来搭建一个基础的Android聊天应用。Openfire是一款开源的XMPP服务器,而Smack是Java和Android上用于XMPP协议的客户端库。 首先,我们需要安装和配置Openfire服务器。...
本教程将聚焦于如何利用Openfire服务器和Smack库构建一个基于Android的IM应用。 Openfire是一款开源的、基于XMPP协议的实时通讯服务器。XMPP(Extensible Messaging and Presence Protocol)是一种标准通信协议,...
以上内容详细介绍了基于Openfire的即时通讯客户端实例的核心技术和实现步骤,无论是Flex还是Android平台,都需要理解XMPP协议,熟练掌握对应开发工具,并能有效整合Openfire的API。通过这个实例,开发者可以学习到...
在本项目中,我们将聚焦于一个基于Openfire服务器的Android即时通讯实现,利用XMPP协议和Smack库来构建客户端。 **XMPP (Extensible Messaging and Presence Protocol) 协议** XMPP是一种开放的标准,用于实现即时...
【及时通讯技术详解】 ...综上所述,本项目提供了一个基于asmack和openfire的即时通讯系统实例,通过学习和实践,开发者可以深入理解XMPP协议的运用,以及在Android平台上构建即时通讯应用的技术细节。
Openfire是一款开源、基于XMPP标准的即时通讯服务器,而asmack则是一个Android平台上对Smack库的移植,用于在移动设备上实现XMPP通信。 首先,了解XMPP:XMPP是一种基于XML的实时通讯协议,广泛应用于即时通讯、...
通过简单的调用,可以创建用户、建立连接、发送和接收消息。 2. **连接管理**:Smack 支持多种连接模式,包括TCP连接、WebSocket连接,以及通过HTTP代理的连接。这确保了在各种网络环境下都能保持稳定通信。 3. **...
**Smack API中文版**是针对即时通讯(Instant Messaging)领域的一个强大开发工具,它提供了丰富的API接口,便于开发者在Java环境中构建实时通信应用。Smack API与Openfire服务器配合使用,可以实现高效的、安全的...
Openfire是一款开源、基于XMPP协议的企业级即时通讯服务器,它允许用户进行实时通信和协作。在Openfire的运行环境中,Java Archive (JAR) 文件起着至关重要的作用,它们包含了必要的类库和资源,使得Openfire能够...
在本例子中,Spark可能被用作测试工具,开发者可以使用它来验证Openfire服务器的配置和asmack库的功能。通过Spark,可以直观地查看消息发送和接收,以及用户状态的变化。 5. **Android应用开发**:在Android上实现...
在Android平台上实现Openfire的登录和注册功能,通常涉及到XMPP(Extensible Messaging and Presence Protocol)协议的使用,因为Openfire服务器就是基于XMPP的一种实时通信服务器。XMPP是一种开放的标准,用于即时...
OpenFire 是一个基于XMPP协议的服务器,与Smack结合使用,可以构建出强大的实时通信系统。 标题提到的"smack4.*所有官方、非官方的依赖包"意味着这是Smack 4.x版本系列的完整依赖集合。Smack的各个版本可能会有不同...