Smack--支持googletalk的Java client API for XMPP
gtalk使用的是jabber定义的XMPP协议,所以用支持jabber的客户端都可以登录。
突发奇想是否可以找到一些封装好的类库,用比较傻瓜的方式写一个比较小的Bot.
在jabber网站上列出来好多。
http://www.jabber.org/software/libraries.shtml
perl python java ruby .net的都有。
看到smack时,觉得比较感兴趣。
http://www.jivesoftware.org/smack/
就按照提供的手册测试了一下子,还真的挺好用。
并且它继承父类直接对googletalk进行了封装,比较方便。
以下代码是在手册中凑合而来,只实现了一个类似“鹦鹉将军”的功能,
你说啥,它就重复一下,如果你说“再见”,它就退出来了。
Code: |
import org.jivesoftware.smack.GoogleTalkConnection; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.Chat; import org.jivesoftware.smack.Roster; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smackx.*; public class TalkBot { public static void main(String args[]){ try { GoogleTalkConnection con = new GoogleTalkConnection(); con.login("username", "passwd"); Chat newchat = con.createChat("sleetdrop@gmail.com"); Message newMessage = newchat.createMessage(); newMessage.setBody("我是学舌的鹦鹉"); newchat.sendMessage(newMessage); while (true) { // Wait for the next message the user types to us. Message message = newchat.nextMessage(); if(message.getBody().equals("再见")){ newchat.sendMessage("滚蛋吧!"); break; } // Send back the same text the other user sent us. newchat.sendMessage(message.getBody()); } con.close(); } catch (XMPPException e) { System.out.println(e.getMessage()); } } } |
运行如下
评论:
哈哈,有意思~~
Posted by: sunu | 2006年01月21日 上午10时15分
那个smack里面也没有GoogletalkConnection这个类阿
Posted by: interer | 2007年04月12日 上午10时27分
我当时用的时候是有的,可能是版本不同?但这样的可能性不大,还有它中是jabber里的一个特例,其实你直接用标准的jabber的client库应该是可以连接上gtalk的。
Posted by: sleetdrop | 2007年04月12日 下午03时58分
你好,把那个googletalk的类给我看看吧 我的油箱是lufeiyue@gmail.com
谢谢阿
Posted by: interer | 2007年04月17日 上午10时15分