【问题标题】:Send XMPP (Smack) Message发送 XMPP (Smack) 消息
【发布时间】:2011-05-31 05:07:49
【问题描述】:

好的,问题应该是微不足道的,但我无法深入了解它。

我有两个用户 A 和 B

他们在本例中的 JID 将是 A@123 和 B@123,其中 123 是服务器的 IP。

我正在使用以下代码从 A->B 发送消息:

   chat = chatmanager.createChat(username,
   new MessageListener() {
      public void processMessage(Chat chat, Message message) {}});
   String sendUsername = username + "@123";
   Message msgObj = new Message(sendUsername, Message.Type.chat);
   msgObj.setBody(message);

   chat.sendMessage(msgObj);

我已经对 IP 进行了硬编码,因此我 100% 确定我在昵称末尾附加了“@123”,这样就不会有不正确的 JID。

所以 A@123 将 msgObj 发送到 B@123。这就是我理解 XMPP 消息传递工作的方式。不能从 A->B 发送,但必须是 A@123 -> B@123。

但是,我的服务器似乎不这么认为。它不断通知我以下错误:

 2010.12.27 19:02:52 [org.jivesoftware.openfire.session.LocalOutgoingServerSession
 .createOutgoingSession(LocalOutgoingServerSession.java:258)] Error trying to 
 connect to remote server: A(DNS lookup: A:5269) 
 java.net.UnknownHostException: A 

在 Openfire 服务器上 A 和 B 的花名册中,他们以正确的 JID (username@123) 作为联系人。

谁能提供一些见解?我迷路了。

编辑

我正在尝试使用 Wireshark 捕获发送到 Openfire 服务器和从 Openfire 服务器发送的 XML,以确定消息的收件人是否正确命名(A@123 而不是 A)。

在使用 Wireshark 时,我收到了正在传输的 XML:

\302\3469\223\341\3429\000\000\000\000\377\377

我禁用了 SSL,我的连接不安全。我不知道为什么我会得到 SSL 类型的 XML,是这样吗?

【问题讨论】:

  • 这只能是由于您向 A 发送了一些东西而不是 A@123。检查您实际发送到服务器的 XML(如果 Smack/Openfire 不提供任何流检查,则使用 Wireshark)。
  • 听起来不错,马特。之前没有想到 Wireshark。如果我硬编码了@IP,我无法理解 Smack 将如何发送给 A。我会让你知道结果。
  • Wireshark 未提供任何相关信息。我相信这是因为我在端口 5222 上连接。它给我的 XML 是一系列数字而不是实际的 XML。不知道如何克服。

标签: xmpp chat openfire smack


【解决方案1】:

原来这个问题的答案只是被忽视了。

在第一行代码中:

 chat = chatmanager.createChat(username, new MessageListener() {
            public void processMessage(Chat chat, Message message) {}
      });

我没有使变量“用户名”具有正确的 IP 扩展名。所以它只是“A”而不是“A@123”

将“sendUsername”移动到顶部并将“username”更改为“sendUsername”,这一切都很好:)

愚蠢的错误。

【讨论】:

    【解决方案2】:

    使用 IP 地址几乎总是比您想象的更令人困惑。

    很有可能您的 OpenFire 配置有误,因此 IP 地址不是有效的主机名。进入管理控制台,在“系统属性”下,确保 xmpp.domain 属性设置为您的 IP 地址。

    【讨论】:

    • Joe,xmpp.domain 设置为 123(遵循我在示例中使用的相同 IP 系统),所以它是正确的。
    猜你喜欢
    • 2016-09-30
    • 2016-10-26
    • 2016-10-20
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    • 2017-10-28
    • 2018-03-10
    • 1970-01-01
    相关资源
    最近更新 更多