[英]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.