0

コンピューターに openfire サーバーをインストールしました (名前: duong2179-pc、静的パブリック IP: 20x.25x.xxx.xxx)。また、Spark をインストールし、test1 と test2 の 2 つのアカウントを登録しました。Smack を使用して小さなデスクトップ Java アプリケーションを開発しました。

Spark で test1 にログインし、アプリケーションで test2 にログインしました。どちらのアカウントも test@20x.25x.xxx.xxx の形式でログインしましたが、問題が発生しました: test1 (Spark の) は test2 (Java アプリケーション) にメッセージを送信できますが、test2 は返送できません。問題の原因は次のとおりです。

sendMessage(message, "test1@20x.25x.xxx.xxx);

など、少し変えてみました

sendMessage(message, "test1@duong2179-pc");

それはうまくいきました。

では、ここでの違いは何ですか?

Spark にログインしたとき、サーバーを duong2179-pc ではなく 20x.25x.xxx.xxx として使用したことに注意してください。

4

1 に答える 1

1

xmpp メッセージを送信すると、受信者の JID (Jabber ID) は、ユーザー情報 (test1)、xmpp ドメイン (duong2179-pc)、およびオプションのリソースの 3 つの部分で構成されます。

user@xmpp.domain/resource

このドメインは、ホスト アドレスではなく、サーバーで構成されている xmpp ドメインです。

Openfire をインストールするときのデフォルト ドメインが、それがインストールされているマシンのホスト名であるというのは、たまたまです。したがって、xmpp ドメインとホスト名がたまたま同じであるため、2 番目のケースは機能しましたが、最初のケースは機能しませんでした。

サーバーで管理コンソールを開き、ドメイン名を別の名前に変更すると、どちらのサンプル行も機能しません。

于 2013-10-07T15:06:46.073 に答える