簡體   English   中英

XMPP Java客戶端-未連接到服務器

[英]XMPP Java client - Not connected to server

我的XMPP Java客戶端有問題。

我有一個XMPP服務器(基於Ejabberd,10.30.16.147)和兩個Pidgin用戶:test1 @ localhost(在Windows計算機上,10.30.16.199)和test2 @ locahost(在Linux服務器計算機上,10.30.16.147)。

當我使用兩個Pidgin客戶端時,聊天可以正常進行。 現在,我試圖創建一個Java客戶端,以模擬兩個Pidgin客戶端之一。 代碼如下(我已經在Eclipse項目中導入了Smack 3.4.1庫):

package test2XMPP;

import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.MessageListener;

public class Sender {

    public static void main(String a[]) throws XMPPException, InterruptedException {
        ConnectionConfiguration config = new ConnectionConfiguration("10.30.16.147", 5222);
        XMPPConnection connection = new XMPPConnection(config);
        connection.connect();
        connection.login("test1@locahost", "test1");

        Chat chat = connection.getChatManager().createChat("test2@localhost", new MessageListener() {

            public void processMessage(Chat chat, Message message) {
                System.out.println("Received message: " + message);
            }
        });

        chat.sendMessage("Howdy test1!");

        while (true) {
            Thread.sleep(50);
        }
    }
}

我得到以下控制台輸出:

    apr 18, 2014 10:19:37 AM org.jivesoftware.smack.provider.UrlProviderFileInitializer initialize
    INFO: Loading providers for file [classpath:META-INF/core.providers]
    apr 18, 2014 10:19:37 AM org.jivesoftware.smack.provider.UrlProviderFileInitializer initialize
    INFO: Loading providers for file [classpath:META-INF/extension.providers]
    Exception in thread "main" java.lang.IllegalStateException: Not connected to server.
        at org.jivesoftware.smack.XMPPConnection.login(XMPPConnection.java:230)
        at org.jivesoftware.smack.Connection.login(Connection.java:368)
        at test2XMPP.Sender.main(Sender.java:18)

如果我已經與我的Pidgin test1 @ localhost客戶端斷開連接,也會收到這些錯誤消息。

你有什么建議嗎? 謝謝

使用new ConnectionConfiguration("10.30.16.147", 5222, "localhost"); connection.login("test1", "test1");

經歷過類似的問題,問題在於主機名和域名不同。 我正在使用ConnectionConfiguration類的單個參數構造函數。

ConnectionConfiguration config = new ConnectionConfiguration(hostname);

只需確定安裝了Ejabberd的計算機的主機名,並確保兩者都相同,客戶端就可以相互通信。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM