0
1つのクライアントを引き続きリッスンし、2つのメッセージのいずれかを返信する必要があります。Java ServerSocket accept-method連続リッスン
accept-methodの仕組みがわかりません。私はそれがクライアントへの接続を開き、その接続を返していることを理解しています。
しかし、次のループではどうなりますか?クライアントからの次のメッセージが到着するまでブロックされますか? また、以下のコードはこの問題の良いアプローチですか?
ServerSocket ss = new ServerSocket();
while(true) {
Socket socket = serverSocket.accept();
//Retreive message from client here
if(incomingFromClient.equals(something)) {
ReplyThread rt = new ReplyThread(socket, reply_1);
rt.start()
} else if(incomingFromClient.equals(somethingElse)) {
ReplyThread rt = new ReplyThread(socket, reply_2);
rt.start();
}
}
'while(true)'は、**実効的にデッドロックがあるので、**良い**アプローチです。実行時にループ本体をスキップすることができます。*このプログラムは決して停止しません。 ..アプリケーションのクラッシュの主な理由の1つ、ユーザーにプロセスを強制終了させる。ループヘッドで 'AtomicBoolean'を使うと、この問題は解決されます。そして、すべての力と自由時間でこのようなミスを守ろうとするプログラミングの初心者をすべて無視してください...初心者のミスは決して*"良いコード " *初心者の大半が欲しいからです。私の3.14セント。 – specializt
"良い"アプリケーションの仕組み: 制御された起動/ init - >制御された実行時間 - >制御されたシャットダウン/解除。それを賢く惜しみなく使ってください。 – specializt
AtomicBooleanソリューションをありがとう。 acceptメソッドは、クライアントからの次のメッセージが到着するまで待機しますか? –