« 说谎 | 首页 | Brokeback Mountain »

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());
        }
    }

}


运行如下
smackgtalk


引用:

本篇引用地址:
http://www.vetcafe.net/cgi-bin/mt3/mt-tb.cgi/2453

评论:

哈哈,有意思~~

那个smack里面也没有GoogletalkConnection这个类阿

我当时用的时候是有的,可能是版本不同?但这样的可能性不大,还有它中是jabber里的一个特例,其实你直接用标准的jabber的client库应该是可以连接上gtalk的。

你好,把那个googletalk的类给我看看吧 我的油箱是lufeiyue@gmail.com
谢谢阿

发表评论

(如果您以前没在这里发表过评论,也许您发表的评论需要Blog主人的审核才能显示在这里,感谢您的静候。)