XMPP Java 客户端 - 未连接到服务器

Posted

技术标签:

【中文标题】XMPP Java 客户端 - 未连接到服务器【英文标题】:XMPP Java client - Not connected to server 【发布时间】:2014-04-18 08:33:22 【问题描述】:

我的 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 客户端断开连接,我也会收到这些错误。

你有什么建议吗? 谢谢

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

有类似的经历,问题是主机名和域名不同。 我使用的是 ConnectionConfiguration 类的单参数构造函数。

ConnectionConfiguration config = new ConnectionConfiguration(hostname);

只需要识别安装 Ejabberd 的机器的主机名并确保它们都相同,以便客户端进行通信。

【讨论】:

以上是关于XMPP Java 客户端 - 未连接到服务器的主要内容,如果未能解决你的问题,请参考以下文章

设置 Redis cookie 时,Apollo 客户端未连接到服务器

wireguard 客户端未连接到互联网

如果已经连接了相同的 JID,XMPP 客户端可以连接到服务器吗?

Hbase 客户端 API 未连接到 Hbase

无法将 Gloox Xmpp 客户端连接到 Openfire 服务器

iOS:客户端如何重新连接到 xmpp 服务器