`
yangzc106
  • 浏览: 157109 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

smack和openfire通信的简单例子

阅读更多

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
3
0
分享到:
评论
2 楼 bluky999 2011-08-19  
smack 主要用来开发XMPP客户端 
openfire则是XMPP协议的XMPP服务器嘛 
1 楼 wearebug 2011-06-23  
smack是XMPP协议的实现,封装了大部分操作,用起来就很简单了。

相关推荐

    基于smack连接openfire服务器的例子-JAVA

    Openfire是基于XMPP的服务器,提供了一个强大且可扩展的架构,使得开发者可以轻松创建聊天、协作和其他实时通信应用。 本文将深入探讨如何使用Smack库,一个Java实现的XMPP客户端库,来连接到Openfire服务器并进行...

    openfire + spark 开发

    我们介绍了 XMPP 协议、IM 软件、Spark、Smack 和 Openfire 的基本概念,并讨论了如何使用插件机制来新增客户端和服务器端的功能。通过这篇文章,我们希望能够帮助开发者更好地理解基于 XMPP 的 IM 软件开发。

    openfire聊天Smack示例

    这个压缩包提供的内容是关于如何在Java环境中使用Smack库与Openfire服务器进行交互的示例代码,特别适合开发者快速了解和集成即时通讯功能。 首先,Openfire服务器提供了用户管理、群组、聊天室等多种功能,它基于...

    Smack3.0.4+ Openfire3.10.2 Android 客户端之四

    Openfire是基于XMPP标准的服务器软件,支持实时通信和协作。版本3.10.2提供了稳定的服务,包括安全的SSL/TLS连接、多用户聊天室、用户管理和监控等。当Android客户端连接到Openfire时,它们之间将通过XMPP协议进行...

    Android代码-基于openfire和smack的安卓xmpp客户端

    【Android代码-基于openfire和smack的安卓xmpp客户端】是一个项目,它实现了使用XMPP协议在Android设备上创建一个客户端应用。XMPP(Extensible Messaging and Presence Protocol)是一种实时通信协议,常用于实现...

    openfire+spark+smack开发流程.doc

    IM,即时通讯,如QQ、MSN Messenger和Gtalk,是网络上广泛使用的通信工具,而Gtalk就是基于XMPP协议的实例。 Openfire是XMPP服务器的实现,用Java编写,提供基础的IM服务。它支持用户连接管理、消息路由和群组聊天...

    WebIM(Openfire+Spark+Smack)

    【WebIM(Openfire+Spark+Smack)】是一个在Java领域实现即时通讯(IM)的解决方案,以其稳定性、安全性和高效性而受到推崇。该方案由三个主要组件构成:Openfire作为服务器端,Spark作为客户端,而Smack则负责实现...

    Android IM之基于Openfire+Smack的聊天服务器的搭建与测试

    本教程将探讨如何利用Openfire服务器和Smack库来搭建一个基础的Android聊天应用。Openfire是一款开源的XMPP服务器,而Smack是Java和Android上用于XMPP协议的客户端库。 首先,我们需要安装和配置Openfire服务器。...

    基于openfire 的android IM 即时通讯smack的android IM

    本教程将聚焦于如何利用Openfire服务器和Smack库构建一个基于Android的IM应用。 Openfire是一款开源的、基于XMPP协议的实时通讯服务器。XMPP(Extensible Messaging and Presence Protocol)是一种标准通信协议,...

    基于openfire的即时通讯客户端实例

    以上内容详细介绍了基于Openfire的即时通讯客户端实例的核心技术和实现步骤,无论是Flex还是Android平台,都需要理解XMPP协议,熟练掌握对应开发工具,并能有效整合Openfire的API。通过这个实例,开发者可以学习到...

    基于openfire下的即时通讯

    在本项目中,我们将聚焦于一个基于Openfire服务器的Android即时通讯实现,利用XMPP协议和Smack库来构建客户端。 **XMPP (Extensible Messaging and Presence Protocol) 协议** XMPP是一种开放的标准,用于实现即时...

    及时通讯基于asmack和openfire,xmpp完整项目

    【及时通讯技术详解】 ...综上所述,本项目提供了一个基于asmack和openfire的即时通讯系统实例,通过学习和实践,开发者可以深入理解XMPP协议的运用,以及在Android平台上构建即时通讯应用的技术细节。

    asmack连接openfire测试

    Openfire是一款开源、基于XMPP标准的即时通讯服务器,而asmack则是一个Android平台上对Smack库的移植,用于在移动设备上实现XMPP通信。 首先,了解XMPP:XMPP是一种基于XML的实时通讯协议,广泛应用于即时通讯、...

    smack4.3.1

    通过简单的调用,可以创建用户、建立连接、发送和接收消息。 2. **连接管理**:Smack 支持多种连接模式,包括TCP连接、WebSocket连接,以及通过HTTP代理的连接。这确保了在各种网络环境下都能保持稳定通信。 3. **...

    Smack API中文版

    **Smack API中文版**是针对即时通讯(Instant Messaging)领域的一个强大开发工具,它提供了丰富的API接口,便于开发者在Java环境中构建实时通信应用。Smack API与Openfire服务器配合使用,可以实现高效的、安全的...

    openfire所需要的jar包

    Openfire是一款开源、基于XMPP协议的企业级即时通讯服务器,它允许用户进行实时通信和协作。在Openfire的运行环境中,Java Archive (JAR) 文件起着至关重要的作用,它们包含了必要的类库和资源,使得Openfire能够...

    Android XMPP例子(Openfire+asmack+spark)

    在本例子中,Spark可能被用作测试工具,开发者可以使用它来验证Openfire服务器的配置和asmack库的功能。通过Spark,可以直观地查看消息发送和接收,以及用户状态的变化。 5. **Android应用开发**:在Android上实现...

    Android Openfire 登陆 注册实现代码

    在Android平台上实现Openfire的登录和注册功能,通常涉及到XMPP(Extensible Messaging and Presence Protocol)协议的使用,因为Openfire服务器就是基于XMPP的一种实时通信服务器。XMPP是一种开放的标准,用于即时...

    smack4.*所有官方、非官方的依赖包,有这些依赖包可以确保启动。

    OpenFire 是一个基于XMPP协议的服务器,与Smack结合使用,可以构建出强大的实时通信系统。 标题提到的"smack4.*所有官方、非官方的依赖包"意味着这是Smack 4.x版本系列的完整依赖集合。Smack的各个版本可能会有不同...

Global site tag (gtag.js) - Google Analytics