zoukankan      html  css  js  c++  java
  • 基于开源软件做个和GTalk聊天的小命令行程序

        因为GTalk是基于Jabber的XMPP协议开发的,所以我们只要下载个Java 的XMPP协议类库就能和GTalk聊天了,其实我好希望所有的IM厂商都互联互通哦,这样我就可以只装一个客户端,和所有人聊天。在这里我们下载的是 igniterealtime 提供的开源 Smack Java XMPP 软件包,下载地址是:

    http://www.igniterealtime.org/downloads/index.jsp#smack ,然后点击下载 smack_3_0_4.zip 。下载之后会得到一个ZIP文件,解压缩后得到类库文件:

    image

    包括了文档和类库。在这里我们只需要smack.jar和smackx.jar就可以了。好了,现在让我们用Eclipse或者其它工具创建一个Java项目,将这两个JAR文件加入进去。例如我这里用的Eclipse:

    image

    然后就是写代码测试了呗,下面是测试代码:

    import org.jivesoftware.smack.Chat;
    import org.jivesoftware.smack.MessageListener;
    import org.jivesoftware.smack.XMPPConnection;
    import org.jivesoftware.smack.packet.Message;
    import java.io.*;


    public class ChatTest {

        public static void main(String[] args) throws Exception {
            XMPPConnection.DEBUG_ENABLED = true;

            XMPPConnection connection = new XMPPConnection("gmail.com");
            connection.connect();
            connection.login("MyEclipseJava", "密码******");
            Chat chat = connection.getChatManager().createChat("beansoft@gmail.com", new MessageListener() {
                public void processMessage(Chat chat, Message message) {
                    System.out.println(message.getFrom() + " " +  new java.util.Date().toLocaleString() + "说:" + message.getBody());
                }

            });
            BufferedReader cmdIn = new BufferedReader(new InputStreamReader(System.in));
            for(;;) {
              try {
                 String cmd = cmdIn.readLine();
                 if("!q".equalsIgnoreCase(cmd)) {
                     break;
                 }
                chat.sendMessage(cmd);
              }catch(Exception ex) {
              }
            }
            connection.disconnect();
            System.exit(0);
        }
    }

     

    代码结构很简单,就是连接到gmail.com的聊天服务器,然后用MyEclipseJava这个账户登录,密码保密和谐成**了。createChat()方法连接您想说话的对象,然后创建消息监听器就行了。

    后面的代码是循环从命令行读取信息并发给目标对象的,直到您输入!q就可以退出聊天了。这段程序的缺点大概就是不能更改聊天的目标对象吧,不过如果把它设置成报警提醒相信会非常有用,例如服务器出错等等,要是所有的IM都互联互通,这样会更有用的。

    这段代码运行的时候会弹出个调试对话框来查看接受和发送的消息,您可以去掉 XMPPConnection.DEBUG_ENABLED = true; 这一句就不会再出来调试对话框了。

     

    好了,运行代码:

    image

    输入消息并按下回车,这时候GTalk就能收到信息了:

    image

    哈哈,说起来跟Google那个简介的界面的确有一拼啊,如果加个SWT或者Swing界面啥的,一个极其简单的文本聊天客户端就诞生了。

    当然现在我们也可以自己搭建个聊天服务器来测试,把代码里面所有的gmail.com都换成聊天服务器的IP就可以了,例如localhost,参考用开源软件搭建企业内部协作平台, Kill QQ MSN一文。

  • 相关阅读:
    python之redis
    redis 双写一致性问题
    MySQL主从复制与读写分离
    高并发下Redis如何保持数据一致性(避免读后写)
    redis的no-appendfsync-on-rewrite参数
    Redis基础、高级特性与性能调优
    python连接redis sentinel集群
    ListView阻尼效果
    零基础学python-5.6 数字位操作与其它工具
    iOS 实现QQ界面
  • 原文地址:https://www.cnblogs.com/bluespot/p/1242766.html
Copyright © 2011-2022 走看看