サーバーから生成されたスレッドを介して複数のクライアントにサービスを提供できるようにするクライアント/サーバー プログラムがあります。現在、プログラムはサーバーと通信するだけですが、クライアントが別のクライアントと通信できるようにプログラムを再設計したいと考えています。これを設計するという点では、正しい方向性を知るにはあまり多くの経験がありません。最初はサーバースレッド経由の通信を考えていましたが、別のクライアントが通信を確立したいということをそのスレッドのクライアントに通知する方法がわかりません。
たとえば、cli A から cli N に通信したい場合:
Cli A <---> SerThread A <------> Main Thread <------> SerThread N <---> Cli N
Cli A が Cli N と通信する必要があることを Cli N に通知する方法がわかりません。
クライアントは、ソケットから読み取るまで、別のクライアントがそのソケットと通信しようとしていることを知りません。したがって、Cli N が送受信を行うまでユーザー入力を待機している状態にある場合、それはわかりません。通信が待機していることをクライアントにすぐに通知する方法が必要です。
考えれば考えるほど混乱するので、これを適切に設計する前に、おそらく何らかのガイダンスが必要です。