0

私には2人のクライアントA、Bがいます

また、私はサーバーSを持っています

AはサーバーSに要求を送信します。この要求により、サーバーSはクライアントAが要求を行ったことをクライアントBに通知したいと考えています。

BがサーバーSにリクエストを送信した場合も同じことが起こりますが、今回はサーバーSがAに通知します

これはクライアントサーバーモデルで可能ですか?クライアントAがサーバーSに要求を送信し、サーバーの応答を表示する単純なプログラムを作成することができました。このプログラムでは、サーバーSは無限の接続をリッスンします。これは、次のようなものがあることを意味します。

while(true){
   Socket userSocket = serverSocket.accept();
   new Connection(clientSocket);
   //where in the Connection class we manage the connection events
}

しかし、サーバー「S」を、リクエストを送信しなかったクライアントへの「接続」クラス内のクライアントにする方法がわかりません。クライアント(AまたはB)に対して通常行うのと同じプロセスを実行すると、IPアドレスを出力する例外が発生しますが、すべてをローカルで実行しているため、どちらのアドレスかわかりません。

前もって感謝します

4

1 に答える 1

0

つまり、A が要求したことを S が B に通知するか、またはその逆です。概念的には、これは S が現在 B のクライアントであることを意味するわけではありません。S は依然としてサーバーであり、B からの入力に反応するのではなく、たまたま B にメッセージを送信しているだけです。

チャット サーバーを表す S について考えてみましょう。A が S にメッセージを送信し、S がそれを B に転送した場合、S は B のクライアントですか、それともサーバーですか?

于 2012-11-19T22:45:41.013 に答える