私が持っているのは、クライアントをリッスンするマルチスレッドソケットサーバーです。開いている接続に対して新しいスレッドが作成され、開始されます。クライアントは、Runtime .exec() メソッドを介していくつかのコマンドを実行するようにサーバーに要求できます。受信した新しいコマンドはすべて新しいスレッドによって処理され (PrintWriter がパラメーターとして渡されます)、すべての出力 (std/err) は PrintWriter を使用してソケット経由で送信されます。
問題は、コマンド (つまりデーモン) に時間がかかり、何らかの理由でクライアントが切断されると、出力を取得できなくなることです。別の接続 (別のスレッドにある新しいクライアント セッション) でそのコマンド実行スレッドから出力を取得する方法を見つける必要があります。
コマンドからのすべての出力を System.out に送信し、それ (System.out) を PrintWriter を使用してソケット経由で送信しようとすることができます (これを行う方法がわかりません)。そして、私が成功した場合、接続されているすべてのクライアントにそのような出力をすべて送信する方法があるかもしれません。
しかし、すべての出力をデータベースに保存しています。複数のクライアントが接続されている場合、データベースに複数の入力が含まれることになります。
この問題を解決するにはどうすればよいか、いくつかのアイデアを教えてください。ありがとう