XMPP(SMACK)メッセージを送信します
質問
わかりました、問題は些細なことですが、私はその底に到達することはできません。
2人のユーザー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をハードコードしたので、ニックネームの終わりに「@123」を添付していることを100%確信しているので、誤ったJIDがありません。
したがって、@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の両方の名簿では、適切なJIDとの接触として互いに互いに互いに接触しています(Username@123)。
誰かが洞察を提供できますか?道に迷いました。
編集
Wiresharkを使用して、OpenFireサーバーに送信されたXMLをキャッチして、メッセージの受信者に適切に名前が付けられているかどうかを判断しようとしています(A@123 Aではなく)。
Wiresharkを使用すると、XMLが転送されたときにこれを受け取りました。
\302\3469\223\341\3429\000\000\000\000\377\377
私はSSLを無効にしました、私は無秩序に接続しました。なぜSSLタイプXMLを取得しているのかわかりませんが、それは何ですか?
解決
この問題に対する答えは、見落とされたものでした。
コードの最初の行で:
chat = chatmanager.createChat(username, new MessageListener() {
public void processMessage(Chat chat, Message message) {}
});
変数「ユーザー名」に適切なIP拡張機能があるようにしませんでした。したがって、「@123」の代わりに単なる「A」でした
「sendusername」を上部に移動し、「sendusername」に「ユーザー名」を変更すると、すべてがうまく機能します:)
愚かな間違い。
他のヒント
IPアドレスを使用することは、ほとんど常にあなたが思っているよりも混乱しています。
IPアドレスが有効なホスト名ではないように、OpenFireが誤解されている可能性が十分にあります。 「システムプロパティ」の下で管理コンソールに移動し、 xmpp.domain
プロパティはIPアドレスに設定されています。