登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: [xmpp/java/gtalk]Smack连接XMPP服务器举例[包含Smack连接Gtalk服务器的两种方案]zt     [回主站]     [分站链接]
标题
[xmpp/java/gtalk]Smack连接XMPP服务器举例[包含Smack连接Gtalk服务器的两种方案]zt
clq
浏览(0) + 2008-10-28 15:19:35 发表 编辑

关键字:

[xmpp/java/gtalk]Smack连接XMPP服务器举例[包含Smack连接Gtalk服务器的两种方案]zt

from http://blog.csdn.net/racingtom/archive/2008/03/02/2140004.aspx
--------------------------------------------------

Smack 连接XMPP服务器举例(包含Smack连接Gtalk服务器的两种方案)收藏
新一篇: 使用Notify4b进行即时通讯(IM)消息发送 | 旧一篇: Openfire源代码研究二(客户端连接)

Smack是Jive Software贡献给开源社区的又一力作,它是一个XMPP(jabber)客户端连接库,具有发送/接受消息,更改出席(presence)状态等众多功能的API,同时Smack又是纯Java(pure Java)库程序,它可以方便的嵌入到你的工程中为你创建小到只具有发送/接受提示消息,大到具有功能完备的XMPP客户端应用程序。Smack遵循Open Source Apache 许可(总所周知,Apache许可的麻烦是最少的,也是非常灵活的许可),所以Smack无论在商业软件中或是非商业软件中都可以使用。



Smack是一个使用非常简单但功能非常强大的XMPP库,它可以很少的语句就可以连接到远程XMPP服务器,同时在应对各种XMPP服务器连接参数的不同Smack又可以通过其丰富的连接选项配置来成功的连接远程XMPP服务器,无论是jabber.org还是Gtalk服务,只要是遵循XMPP协议的XMPP服务器,都可以通过Smack来进行连接。



Smack无疑在设计上是优秀的,这继承了Jive software (www.jivesoftware.com)在XMPP协议相关产品上的设计特点,例如Openfire服务器(这几乎是可以肯定的,Smack的设计者之一是IAIN SHIGEOKA,他是《Manning - Instant messaging in java》一书的作者,当XMPP还是没有成为正式标准之前的Jabber时,SHIGEOKA在这一领域就已经有所建树,但是现在可能自己开公司了吧),按照官方文档的说明来讲,Smack有一下优点:



1. Smack不会像其他一些XMPP库那样强迫你在包层(packet level 注:这里的packet应该说的是XMPP 的XML packet)进行编码。Smack提供了一些更智能的工作在更高层(注:packet层之上)之上的构造,例如Chat类和Roster类。这样会令你更加高效的编程。

2. 不要求你熟悉XMPP XML格式,即使你可能很熟悉它。

3. 提供简单的机器对机器(machine to machine)通讯,Smack允许你设置消息的各种属性,即使这种属性是用Java Object。

4. Smack遵循Open Source Apache许可,无论在商业软件中或是非商业软件中都可以使用。



Smack使用起来非常简单,下面我举两个简单的例子,一个是使用默认参数进行连接XMPP服务器,另一个是连接Gtalk服务器,其中连接Gtalk服务器的例子我将会就Smack版本的不同给出两个方案。



1. 利用Smack使用默认参数对远程XMPP服务器进行连接。

XMPPConnection connection = new XMPPConnection("jabber.org");

connection.connect();

connection.login("racingtom", "password");

Chat chat = connection.getChatManager().createChat("sui.dapeng@gmail.com",

new MessageListener() {

public void processMessage(Chat chat, Message message) {

System.out.println("Received message: " + message);

}

});

chat.sendMessage("Hi buddy!");



2. 连接Gtalk服务器

在连接Gtalk服务器是因为Smack版本的不同的解决方案,Smack 2.0中有单独的连接Gtalk服务器的类,名字
叫做GoogleTalkConnection,而Smack当前的版本已经去掉了与Gtalk服务相关的类,大概是不想突出Gtalk
的特殊性,也是为了去掉那么多重复的代码吧。所以在找不到GoogleTalkConnection类的情况下很多程序员在
刚开始连接Gtalk时出现了麻烦,其实国外论坛有很多解决的方案。



2.1 Smack2.0连接Gtalk服务器

XMPPConnection connection = new GoogleTalkConnection();

connection.login("racingtom", "password");

Chat chat = connection.getChatManager().createChat("sui.dapeng@gmail.com",

new MessageListener() {

public void processMessage(Chat chat, Message message) {

System.out.println("Received message: " + message);

}

});

chat.sendMessage("Hi buddy!");





2.2 Smack当前版本(目前版本为3.04)连接Gtalk服务

ConnectionConfiguration connectionConfig = new ConnectionConfiguration(

"talk.google.com",5222,"gmail.com");

XMPPConnection connection = new XMPPConnection(connectionConfig);

try {

connection.connect();

connection.login("sui.dapeng", "password");



ChatManager chatmanager = connection.getChatManager();

Chat newChat = chatmanager.createChat("racingtom@gmail.com",

new MessageListener() {

public void processMessage(Chat chat, Message message) {

System.out.println("Received message: " + message.toXML());

}

});



newChat.sendMessage("Hi, racingtom");



} catch (XMPPException e) {

e.printStackTrace();

}

clq
2008-10-28 15:23:43 发表 编辑

这个是 python 的.
--------------------------------------------------
Jabber Gtalk Bot初体验

June 3rd, 2007 | Published in 玩转科技 | 6 Comments

Jabber已经越来越有影响力了,心血来潮今天想研究下Jabber Bot怎么写。
1.首先安装Jabber的Python封装xmpppy
2.xmpppy需要调用dns包,安装pydns
3.写一段代码,保存为xsend.py

import sys,os,xmpp

if len(sys.argv) < 2:
print “Syntax: xsend JID text”
sys.exit(0)

tojid=sys.argv[1]
text=’ ‘.join(sys.argv[2:])

jidparams={}

jidparams['jid']=’yourname@gmail.com’
jidparams['password']=’yourpassword’

jid = xmpp.protocol.JID(jidparams['jid'])
cl = xmpp.Client(jid.getDomain(),debug=[])
cl.connect((’talk.google.com’,5222))
cl.auth(jid.getNode(),jidparams['password'])

cl.send(xmpp.protocol.Message(tojid,text,typ=’chat’))

4.用xsend.py targetname@gmail.com text的语法发送消息
5.没有第五步了,不过记得要把发信息的gmail帐号和收信息的gmail帐号加为好友才发的过去哦。

有时间可以自己写个bot来玩玩。也许每人都有自己定制bot的时代已经离我们不远了。


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1