基於開源軟體做個和GTalk聊天的小命令列程式

來源:互聯網
上載者:User

    因為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檔案,解壓縮後得到類庫檔案:

包括了文檔和類庫。在這裡我們只需要smack.jar和smackx.jar就可以了。好了,現在讓我們用Eclipse或者其它工具建立一個Java項目,將這兩個JAR檔案加入進去。例如我這裡用的Eclipse:

然後就是寫代碼測試了唄,下面是測試代碼:

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; 這一句就不會再出來調試對話方塊了。

 

好了,運行代碼:

輸入訊息並按下斷行符號,這時候GTalk就能收到資訊了:

哈哈,說起來跟Google那個簡介的介面的確有一拼啊,如果加個SWT或者Swing介面啥的,一個極其簡單的文本聊天用戶端就誕生了。

當然現在我們也可以自己搭建個聊天伺服器來測試,把代碼裡面所有的gmail.com都換成聊天伺服器的IP就可以了,例如localhost,參考用開源軟體搭建企業內部協作平台, Kill QQ MSN一文。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.