`
houchangxi
  • 浏览: 64670 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多
万事都不能从零开始,XMPP规范就象webServece规范一样.我们最后选用一个库来加速开发.
所以我们选择使用Smack因为它容易使用,设计合理,还记得我们的经典jive吗,它也是他们开发
的,应该还是比较不错的. 注意是apache的licence,也就是可以应用到你的商业程序中.
下载地址:
使用简单,你不需要精通xmpp协议(这加快我们入门,从例子开始我们跟容易理解),创建一个xmpp
连接,并向一个用户发送信息,只需要三行代码:
XMPPConnection connection = new XMPPConnection("jabber.org" );
connection.login("mtucker" , "password" );
connection.createChat("jsmith@jivesoftware.com" ).sendMessage("Howdy!" );
因为是tcp协议,首先必须创建一个网络连接:
XMPPConnection 就是用来创建和xmpp服务器的连接的类,如果需要ssl就使用SSLXMPPConnection.
// 创建连接.


XMPPConnection conn1 = new

 XMPPConnection("jabber.org"
);


// 指定端口


XMPPConnection conn2 = new

 XMPPConnection("jabber.org"
, 5222);

// 创建ssl连接.


XMPPConnection connection = new

 SSLXMPPConnection("jabber.org"
);
一旦你创建了连接,你需要使用用户名和密码来登陆,你可以使用
XMPPConnection.login(String username, String password) 方法.一旦你完成登陆了,你可以通过
创建新的Chat或者是GroupChat对象来和其它人聊天.
操作 名册
名册让你能够跟踪其它在线的用户,用户可以被组织成为组,例如好友,同事,并且你可以发现谁
在线,谁不在线.
你可以使用 XMPPConnection.getRoster() 方法来取得好友名单,得到roster类.roster类允许你查找名册
实体,比如他们属于那个组,和当前的状态.
读写数据包
没一个从客户端发送到xmpp服务器的包都是xml格式的文本.org.jivesoftware.smack.packet 保护了封装
三种xmpp级别包:message,presence,IQ.Chat类和GroupChat类提供了高级别的类管理包自动的生成和发送,
但是你也可以手动创建它们.下面例子演示了改变你的在线情况,告诉其它人你不在线"外出捕鱼"去了.
//用presence.Type.UNAVILABLE作为参数创建一个presence描述你不在线.


Presence presence = new Presence(Presence.Type.UNAVAILABLE);
presence.setStatus("Gone fishing"
);

// 发送该包.


con.sendPacket(presence);

Smack 提供了两种方式来读取包:
PacketListener

,和 PacketCollector

.
它们都使用PacketFilter实例来决定那些包需要处理.一个PacketListener使用事件风格的编程,packet collector 
提供轮循和阻塞的操作.
因此,packet listener用来处理随即发送来的包,packet collector用来等待指定的包.
Packet collectors and listeners使用XMPPConnection 对象来创建实例.
分享到:
评论

相关推荐

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

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

    xmppclient:Go 中的 XMPP 客户端

    1. **初始化连接**:创建一个XMPP客户端实例,设置服务器地址、端口、JID和密码。如果服务器支持TLS,还需开启安全连接。 2. **身份验证**:连接到服务器后,执行XMPP的身份验证过程,可以是简单的用户名/密码认证...

    xmpp聊天实例

    首先,我们需要了解Smack库,它是Java平台上的一个开源XMPP客户端库,提供了与XMPP服务器交互的各种API。在代码中可以看到,导入了多个Smack相关的类,如`XMPPConnection`、`PacketListener`、`MultiUserChat`等,...

    XMPP协议 C#实例

    然后,你可以创建一个连接实例并建立到服务器的连接。以下是一个简单的示例代码片段: ```csharp using Xmpp.Client; using Xmpp.Xml.Dom; public class XmppClient { private XmppClientConnection connection; ...

    XMPP 核心 (内附XMPP实例)

    8. **客户端库**:agsXMPP是一个流行的C++库,用于开发XMPP客户端应用。它提供了一套API,方便开发者快速构建XMPP应用。agsxmpp_installer下载地址.txt文件很可能是指向这个库的安装说明或下载链接。 9. **应用场景...

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

    在Android端,我们可以使用Smack库,这是一个Java实现的XMPP客户端库,它提供了丰富的API来处理XMPP连接、会话管理和消息传递。Android应用需要处理网络权限,并通过Smack库与Openfire服务器建立连接,实现用户认证...

    XMPP消息推送Demo【服务器+客户端】

    4. **资源绑定**:客户端连接到服务器后,需要绑定一个资源(例如,设备ID),以便服务器可以区分不同的客户端实例。 5. **推送订阅**:客户端需要订阅特定的主题或者服务,以便只接收感兴趣的消息。 6. **离线消息...

    smack源码,3.2版本的,基于xmpp的即时通讯客户端

    在3.2版本中,Smack提供了丰富的API,使得开发者可以方便地构建自己的XMPP客户端和服务端应用。 在开始源码分析之前,我们需要了解几个关键概念: 1. **XMPP协议**:XMPP基于XML,它定义了客户端与服务器之间的...

    XMPP源代码

    XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准通信...通过深入学习这些知识点,并结合提供的源代码,你将能够构建自己的XMPP客户端应用程序,实现与OpenFire或其他XMPP服务器的交互。

    xmpp的使用 android版本

    Smack是Java语言实现的XMPP客户端库,对于Android平台,它提供了API以便开发者轻松集成XMPP功能。Smack-4.2.1修复了一些已知问题,提高了性能和兼容性,使其更适合Android环境。 二、XMPP基础概念 1. JID(Jabber ...

    安卓XMPP聊天通讯Socket相关-XMPP(Android客户端的实现Tomcat版的Androidpn).rar

    3. "androidpn-client":可能是Androidpn项目的客户端部分源代码,负责在Android设备上实现XMPP的连接和通讯功能。 在Android中实现XMPP,一般会使用特定的库,如Smack或XMPPTCPConnection,这些库简化了与XMPP...

    XMPP正式RFC标准3920

    服务器在XMPP架构中扮演着核心角色,主要负责管理客户端连接、会话控制、消息路由等。服务器还可能负责存储客户端的数据(如联系人列表),并直接处理这些数据而无需转发至其他实体。 ##### 2.3 客户端 客户端通常...

    安卓XMPP聊天通讯Socket相关-仿微信聊天软件Socket实现.zip

    XMPP是一种基于XML的实时通讯协议,常用于即时通讯应用,而Socket则是网络编程中的基础概念,用于创建客户端和服务器端之间的连接。 首先,我们需要理解XMPP的工作原理。XMPP的核心是Jabber协议,它定义了客户端和...

    xmpp协议demo

    9. **XmppClient**:这部分很可能是XMPP客户端的源代码或编译后的类文件,实现了与XMPP服务器的交互,包括登录、发送和接收消息等功能。 10. **XmppServer**:同样,这部分可能包含了XMPP服务器的实现,处理客户端...

    gloox1实现xmpp协议

    在众多的XMPP实现库中,gloox是一个广泛使用的开源库,它为开发者提供了一个强大且灵活的工具来构建XMPP客户端应用。本文将深入探讨gloox1.0的实现原理、核心功能以及如何利用它进行XMPP应用的开发。 一、gloox1.0...

    qxmpp-0.7.6.tar.gz

    《基于QXmpp库在Ubuntu Linux上构建XMPP客户端的深度解析》 XMPP(Extensible Messaging and Presence Protocol,可扩展消息传递和存在协议)是一种开放标准,用于实时通信和协作,广泛应用于即时消息和在线状态...

    基于xmpp协议的gloox底层库开发的即时通讯qtalk源码

    XMPP是基于客户端-服务器架构的,其中客户端通过TCP连接与服务器进行交互,发送和接收XML数据流。它支持身份验证、加密和资源管理等功能,确保通信的安全性和可靠性。Gloox库则简化了开发人员在C++中实现这些功能的...

    XMPPHP.rar_PHP XMPP_XMPPHP_BOSH_php xmpp_php xmpphp_xmpp s

    XMPPHP是一个基于PHP的XMPP(Extensible Messaging and Presence Protocol)客户端库,它允许开发者在PHP应用程序中...通过深入理解和熟练使用XMPPHP,你可以创建出高效、稳定的XMPP客户端应用,满足多样化的通讯需求。

    xmpp-php:用于XMPP(Jabber)协议PHP客户端库

    XMPP(Jabber)协议PHP客户端库 这是一种低级套接字实现,由于缺少在线此类库,使PHP能够与XMPP进行通信(至少我可以找到具有不错文档的库)。 XMPP核心文档可以在找到。 安装要求和示例 项目要求在composer.json ...

    xmpp——Smack的IM实现

    使用Smack,你可以创建`XMPPTCPConnection`实例来建立与XMPP服务器的TCP连接,然后通过`Login`方法进行身份验证。一旦连接建立并登录成功,你可以使用`UserManager`类来查找或创建用户,`Roster`类来管理联系人,...

Global site tag (gtag.js) - Google Analytics