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 服务器的主要内容,如果未能解决你的问题,请参考以下文章