3

さて、問題は些細なことですが、私はそれの根底に到達することはできません。

AとBの2人のユーザーがいます

この例の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);

ニックネームの末尾に「@123」を付けることが100%確実になるように、IPをハードコーディングして、誤った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サーバーとの間で送受信されるXMLをキャッチし、メッセージの受信者に適切な名前が付けられているかどうかを判断しようとしています(AではなくA @ 123)。

Wiresharkを使用すると、転送されるXMLとしてこれを受け取りました。

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

SSLを無効にしましたが、安全に接続していません。なぜSSLタイプのXMLを取得しているのかわかりませんが、それは何ですか?

4

2 に答える 2

3

この問題に対する答えは、見過ごされていたものでした。

コードの最初の行:

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

変数「username」に適切なIP拡張子を付けませんでした。つまり、「A@123」ではなく「A」でした。

「sendUsername」を一番上に移動し、「username」を「sendUsername」に変更すると、すべてがうまく機能します:)

愚かな間違い。

于 2010-12-29T09:02:37.737 に答える
1

ほとんどの場合、IPアドレスの使用は、思っているよりも混乱を招きます。

OpenFireの設定が間違っている可能性が高いため、IPアドレスが有効なホスト名ではありません。管理コンソールの[システムのプロパティ]に移動し、xmpp.domainプロパティがIPアドレスに設定されていることを確認します。

于 2010-12-29T00:57:38.517 に答える