0

我的电脑上安装了openfire服务器(名称:duong2179-pc,静态公网IP:20x.25x.xxx.xxx)。我还安装了 Spark 并注册了 2 个帐户:test1 和 test2。我使用 Smack 开发了一个小型桌面 Java 应用程序。

我在 Spark 上登录了 test1,在我的应用程序上登录了 test2,两个帐户的格式如下:test@20x.25x.xxx.xxx,然后我遇到了麻烦:test1(在 Spark 上)可以向 test2(Java 应用程序)发送消息,但 test2无法寄回。这是问题的根源:

sendMessage(message, "test1@20x.25x.xxx.xxx);

我试图改变一点,比如

sendMessage(message, "test1@duong2179-pc");

然后它运作良好。

那么这里的不同点是什么?

请注意,当我登录 Spark 时,我使用的服务器是 20x.25x.xxx.xxx 而不是 duong2179-pc

4

1 回答 1

1

发送 xmpp 消息时,接收方的 JID(Jabber ID)由三部分组成,用户信息(test1)、xmpp 域(duong2179-pc)和可选资源。

user@xmpp.domain/resource

此域不是主机地址,它是您服务器上配置的 xmpp 域。

碰巧的是,安装 openfire 时的默认域是安装它的机器的主机名。因此 xmpp 域和主机名恰好是相同的,这就是为什么第二种情况有效,但不是第一种。

如果您在服务器上打开管理控制台并将域名更改为其他名称,则任何示例行都不起作用。

于 2013-10-07T15:06:46.073 回答