0

今日、UDPリスナーとサーバーを使用してチャットアプリを形成するUDPベースのチャットソフトウェアを構築しました。

私がテストのために友人にそれを渡したとき、彼は、私のメッセージがルーターを介して彼に届くようにポート転送する必要があり、私もそうしました.

msn メッセンジャーやスカイプなどの IM クライアントがどのように機能するのか、興味があります。ポート転送せずにメッセージを受信するにはどうすればよいですか?

ありがとう、ヴィドゥ

4

1 に答える 1

2

MSNなどのクライアントは、技術的にはポート転送/ルーティングも備えているサードパーティのリモートサーバーに接続しますが、静的IPアドレスを介して公開されています. MSN などのクライアント アプリケーションをダウンロードしてリモート サーバーに接続しますが、クライアント自体はサーバーとして機能しないため、ポート フォワーディングは必要ありません。ほとんどの場合、メッセージを消費し、さらに受信するまでブロックするため、サーバーはメッセージを送信するために IP アドレスを介してアクセスする必要はありません。

あなたの場合、プライベート ネットワークでリモート サーバーをホストしているため、その IP アドレスへのトラフィックを、それに接続している適切な内部デバイスにルーティングする必要があります。コンピュータ。

あなたの友人もアプリケーションを機能させるためにポート転送する必要があるため、彼らのクライアントもサーバーとして機能しており、サーバーとの接続/ソケットを維持していないようです。クライアントがサーバーとのソケットを維持する場合、あなただけがポート転送する必要があり、あなたの友人はそうしません。なぜなら、クライアントはリクエストをリッスンし、リクエストが来るまでブロックし、リクエストをサーバーに送信するからです。


RabbitMQ のような実際のメッセージ バスを調べて、このメッセージ バスをホストし、クライアントを構築してそれにサブスクライブし、メッセージを送受信することができます。もう 1 つのオプションは Redis で、POP 機能を使用して、クライアントによってキューから取得された「読み取り」メッセージを削除できます。

于 2012-09-19T17:24:48.867 に答える