【问题标题】:XMPP Java client - Not connected to serverXMPP Java 客户端 - 未连接到服务器
【发布时间】: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 客户端断开连接,我也会收到这些错误。

你有什么建议吗? 谢谢

【问题讨论】:

    标签: java eclipse client xmpp smack


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      ConnectionConfiguration config = new ConnectionConfiguration(hostname);
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-26
        • 2012-07-20
        • 1970-01-01
        • 2014-11-04
        • 2013-08-27
        • 2013-12-26
        相关资源
        最近更新 更多