smack 正在连接到 ejabberd 服务器

Posted

技术标签:

【中文标题】smack 正在连接到 ejabberd 服务器【英文标题】:smack is connecting to ejabberd server 【发布时间】:2015-12-20 09:23:32 【问题描述】:

这是我连接 ejabberd 服务器的 smack 代码

    XMPPTCPConnectionConfiguration.Builder builder = XMPPTCPConnectionConfiguration.builder();
    builder.setUsernameAndPassword("admin@manish-lenovo-g510", "admin");
    builder.setServiceName("manish-lenovo-g510");
    builder.setHost("192.168.1.2");     
    builder.setPort(5280);
    XMPPTCPConnectionConfiguration build = builder.build();        
    AbstractXMPPConnection conn1 = new XMPPTCPConnection(build);
    conn1.connect();              

我收到此错误:

Exception in thread "main" org.jivesoftware.smack.SmackException$NoResponseException: No response received within reply timeout. Timeout was 5000ms (~5s). Used filter: No filter used or filter was 'null'.
    at org.jivesoftware.smack.SmackException$NoResponseException.newWith(SmackException.java:106)
    at org.jivesoftware.smack.SmackException$NoResponseException.newWith(SmackException.java:85)
    at org.jivesoftware.smack.SynchronizationPoint.checkForResponse(SynchronizationPoint.java:253)
    at org.jivesoftware.smack.SynchronizationPoint.checkIfSuccessOrWait(SynchronizationPoint.java:146)
    at org.jivesoftware.smack.SynchronizationPoint.checkIfSuccessOrWaitOrThrow(SynchronizationPoint.java:125)
    at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection.java:837)
    at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:365)

如果我打开 ejabberd 的管理界面,那么为什么这段代码不起作用。还有一件事是如何找到服务名称,因为我猜这可能是我不知道服务名称的问题,我是随机给出的。

【问题讨论】:

【参考方案1】:

我认为端口应该是标准的 XMPP 端口,即 5222。5280 是 Web 管理员的端口,它说的是 HTTP,而不是 XMPP。

【讨论】:

服务名呢?怎么会知道服务名? 这取决于您的服务器的配置。以主机为例。 ejabberd.yaml 我找到了“hosts”字段。这就是你在说的吗?它类似于我本地电脑上的hosts: - "manish-Vostro-2520" 那是您的域名,是的。域是 XMPP 协议的核心。

以上是关于smack 正在连接到 ejabberd 服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 smack-android 连接到禁用安全功能的 ejabberd?

Smack 连接到服务器失败

smack 普通 SASL 到 jabberd

Mcabber:无法连接到服务器(Ejabberd)

ejabberd:连接到服务器时获取用户(版本和操作系统)

如何将 ejabberd 服务器连接到 Logica opensmpp