`
kongweile
  • 浏览: 521465 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Smack编写jabber客户端(下)

 
阅读更多

Smack提供了一个灵活的框架来处理接受到的数据包:

  • org.jivesoftware.smack.PacketCollector -- 让你同步等待新的包.
  • org.jivesoftware.smack.PacketListener -- 异步通知你包的到来.
一个packet listener在事件风格的程序中使用,packet collector可以做轮循和阻塞操作.它们都可以
使用XMPPConnection 实例来创建.

org.jivesoftware.smack.filter.PacketFilter 接口定义了那些包会分发到PacketCollector 
或者是PacketListener.你可以在 org.jivesoftware.smack.filter 包中找到预定义的filters.

 

// 创建一个包 filter监听特定用户的消息.我们使用AndFilter来联合两个filters.
PacketFilter filter = new AndFilter(new PacketTypeFilter(Message.class), 
        new FromContainsFilter("mary@jivesoftware.com"));
// 假设我们创建了名称为 "connection" XMPPConnection 对象.

// 首先使用上面的filter创建PacketCollector对象.
PacketCollector myCollector = connection.createPacketCollector(filter);

// 接着, 我们创建一个 packet listener. 方便起见我们使用匿名内部类.
PacketListener myListener = new PacketListener() {
        public void processPacket(Packet packet) {
            // 当包到的时候你做什么.
        }
    };
// 注册.
connection.addPacketListener(myListener, filter);

 

标准Packet Filters

我们提供了一系列的filters,你可以实现 PacketFilter 接口来自定义实现.
  • PacketTypeFilter -- filters for packets that are a particular Class type.
  • PacketIDFilter -- filters for packets with a particular packet ID.
  • ThreadFilter -- filters for message packets with a particular thread ID.
  • ToContainsFilter -- filters for packets that are sent to a particular address.
  • FromContainsFilter -- filters for packets that are sent to a particular address.
  • PacketExtensionFilter -- filters for packets that have a particular packet extension.
  • AndFilter -- implements the logical AND operation over two filters.
  • OrFilter -- implements the logical OR operation over two filters.
  • NotFilter -- implements the logical NOT operation on a filter.

用Smack编写jabber客户端的基本知识都够了,更多内容请查阅官方资料和mail list请求帮助.

分享到:
评论

相关推荐

    Jabber协议概述

    例如,"基于Jabber的IM系统的研究与实现.exe"可能是一个使用Java编写的XMPP客户端或服务器程序,演示了如何在实际项目中应用Jabber协议。 **即时通讯应用** Jabber协议广泛应用于各种即时通讯应用,包括Google ...

    smack包.zip

    为了使用这些库,开发者需要在Android项目中添加对应的JAR文件,并根据Smack的API文档编写代码来建立连接、创建实体、发送和接收消息等。同时,由于Android系统的限制,可能还需要处理网络权限、后台服务持续运行等...

    android studio基于XMPP,Openfire,Smack聊天demo

    Smack是一个用Java编写的XMPP客户端库,它可以方便地在Java应用程序中集成XMPP功能。Smack提供了连接Openfire或其他XMPP服务器、发送和接收消息、管理用户状态以及进行多用户聊天的能力。在Android Studio的项目中,...

    基于Jabber的IM系统的研究与实现

    其次,开发客户端应用,可以选择已有的库(如Smack for Java或Swift for iOS)进行二次开发,或者从头编写。客户端需要实现用户界面、连接管理、消息处理和扩展功能。 **关键技术** - **XML流处理**:XMPP基于XML流...

    XMPP 开源客户端代码

    开发者可以根据需要查找或编写对应的Smack扩展库。 8. **异常处理**:在实际应用中,需要对连接丢失、认证失败等异常情况进行处理,使用`XMPPTCPConnection`的异常监听器可以捕获并处理这些情况。 9. **代码优化**...

    创建基于 Ajax 的 IM 客户端

    要创建基于Ajax的IM客户端,我们还需要Smack Java API,它提供了与Jabber服务器交互的接口。Prototype JavaScript库将被用来处理Ajax请求,简化DOM操作,并实现实时页面更新。此外,Apache Tomcat作为Java Web应用...

    xmpp服务器和android客户端源码

    - **推送服务**: 基于XMPP的推送服务可以实现实时通知,通过服务器向客户端发送消息,即使应用在后台或关闭状态下也能收到。 4. **调试与测试**: - 使用XMPP客户端工具(如Psi或Gajim)模拟服务器交互,验证...

    基于xmpp编写的demo

    Smack是Java语言的一个XMPP客户端库,用于构建XMPP应用。它包含了实现XMPP协议所需的基本组件,如连接管理、会话建立、实体发现、消息传输等。开发者可以利用Smack轻松地与XMPP服务器进行交互,实现即时消息传递、...

    Android Smack聊天室 Demo

    开发者可以使用Openfire快速搭建一个即时通讯服务器,为Android Smack客户端提供服务。 4. **Android编程**:这个Demo是针对Android平台的,因此涉及到Android SDK的使用,包括Activity、Intent、BroadcastReceiver...

    Jabber协议的开发服务组件的C++库,现在很难找到

    Smack提供了完整的XMPP客户端实现,包括会话管理、多用户聊天、文件传输等功能。 4. **Poco C++ Libraries**:Poco库是一个全面的C++类库集合,包含了网络组件,其中包括对XMPP的支持。这使得开发者可以在Poco框架...

    HR.rar_Jabber_课程设计

    3. **JavaXMPP库的使用**:为了简化Jabber协议的实现,通常会使用如Smack或XmppClientToServer这样的Java库。这些库提供了API来创建连接、发送和接收消息、管理用户状态等。学习如何有效地利用这些库可以大大提高...

    Smack:一个模块化的可移植的开源XMPP客户端库,用Java编写,适用于Android和Java(SE)VM

    是用Java编写的开放源代码,高度模块化,易于使用的XMPP客户端库,用于Java SE兼容的JVM和Android。 它是纯Java库,可以嵌入到您的应用程序中,以创建从完整的XMPP即时消息客户端到简单的XMPP集成(例如发送通知...

    Android启动Service登陆Openfire实现基于XMPP Smack的消息推送功能

    Smack是一个用Java编写的XMPP客户端库,它允许开发者轻松地与Openfire服务器进行通信。在本项目中,Smack库被集成到Android应用中,用于处理登录、发送和接收消息等功能。以下是如何使用Smack进行XMPP操作的基本步骤...

    xmpp客户端开发库

    例如,"txmpp-master"这个文件可能是一个用C++编写的XMPP客户端库,其“master”分支可能代表最新的、最稳定的代码版本。 C语言作为底层系统编程的主要语言,被广泛用于开发高效、低级别的网络通信库。txmpp可能是...

    基于openfire下的即时通讯

    XMPP的核心概念包括客户端、服务器和服务器之间的连接,通过Jabber ID(JID)来标识用户。XMPP支持一对一、一对多以及多对多的通信模式,使得聊天、群聊、文件传输等多种功能得以实现。 **Smack库** Smack是Java和...

    ksiirc2jabber-开源

    ksiirc2jabber利用Smack库来处理Jabber/XMPP协议的相关操作。 5. **PIRCBot库**:PIRCBot是一个用Java编写的IRC机器人框架。它提供了一系列的基础功能,如事件监听、频道管理等,方便开发者快速创建自己的IRC机器人...

    基于openfire为服务器的xmpp即时通信 Android客户端

    3. **Android客户端开发**:在Android平台上,开发者通常会使用Smack或XMPPTCPConnection库来实现与openfire服务器的连接。需要掌握Android Studio的使用,XML布局设计,以及Activity、Service等组件的应用。同时,...

    Android基于XMPP协议的数据推送技术.pdf

    文档中提到了asmack-jse.jar这个jar包,这是Smack库在Android环境下的一个版本,可以实现与服务器之间的连接和通信。开发人员可以利用这些库来开发XMPP客户端,并实现用户注册、登录、发送接收消息、获取好友状态等...

    openfire介绍

    Smack则是Java环境下实现XMPP协议的客户端库,它提供了一系列API,使得开发者能够构建自己的XMPP应用程序。通过Smack,不仅可以向Openfire注册的用户发送消息,还可以监听并响应用户的回应,甚至可以向MSN、QQ和...

Global site tag (gtag.js) - Google Analytics