题
好的,问题应该是微不足道的,但我无法陷入困境。
我有两个用户A&B
他们的JID为此示例将是@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”,因此没有错误的jids。
因此,@123将MSGOBJ发送到B@123。这就是我理解XMPP消息传递的方式。您不能从A-> B发送,但必须是@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的花名册中,它们彼此与适当的JIDS联系(用户名@123)。
谁能提供一些见识?我迷路了。
编辑
我试图使用Wireshark捕获发送和从OpenFire服务器发送的XML,以确定消息的收件人是否正确命名(@123而不是A)。
使用Wireshark后,我收到了XML传输时收到的:
\302\3469\223\341\3429\000\000\000\000\377\377
我已经禁用了SSL,我已经不确定地连接。我不确定为什么要获得SSL Type XML,那是什么?
解决方案
事实证明,这个问题的答案刚刚被忽略了。
在第一行代码中:
chat = chatmanager.createChat(username, new MessageListener() {
public void processMessage(Chat chat, Message message) {}
});
我没有使变量“用户名”具有正确的IP扩展名。因此,它只是“一个”而不是“@123”
将“ sendusername”移至顶部,然后更改“用户名”到“ sendusername”使一切正常工作:)
愚蠢的错误。
其他提示
使用IP地址几乎总是比您想象的更令人困惑。
您很有可能打开窗口错误配置,因此IP地址不是有效的主机名。进入管理控制台,在“系统属性”下,确保 xmpp.domain
属性设置为您的IP地址。
不隶属于 StackOverflow