好的,这个问题应该是微不足道的,但我无法深究它。
我有两个用户A&乙
这个例子的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 - >乙@ 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(用户名@ 123)。
任何人都可以提供一些见解吗?我输了。
修改
我正在尝试使用Wireshark来捕获发送到Openfire服务器和从Openfire服务器发送的XML,以确定消息的收件人是否正确命名(A @ 123而不是A)。
使用Wireshark后,我收到了这个正在传输的XML:
\302\3469\223\341\3429\000\000\000\000\377\377
我已禁用SSL,我已无法安全连接。我不知道为什么我会得到SSL类型的XML,它是什么?
答案 0 :(得分:3)
事实证明,这个问题的答案是被忽视的。
在第一行代码中:
chat = chatmanager.createChat(username, new MessageListener() {
public void processMessage(Chat chat, Message message) {}
});
我没有让变量“username”拥有正确的IP扩展名。所以它只是“A”而不是“A @ 123”
将“sendUsername”移到顶部,将“username”更改为“sendUsername”可以使一切运行得很好:)
愚蠢的错误。
答案 1 :(得分:1)
使用IP地址几乎总是比您想象的更令人困惑。
您很可能错误配置了OpenFire,因此IP地址不是有效的主机名。进入管理控制台的“系统属性”下,确保xmpp.domain
属性设置为您的IP地址。