xクライアントをリッスンするTCPサーバーを設計したいと思います。Xは小さく、たとえば10前後で固定されています。クライアントはいつでも接続できます。接続が確立されたら(accept()
成功すると)、クライアントごとにスレッドを生成して処理します。
このhandle()
関数では、クライアントにコマンドを送信し、それに応じてデータを受信します。
問題: サーバーからコマンドが送信されると、クライアントはデータを継続的に送信して応答します。クライアントにコマンドを返送して停止するにはどうすればよいですか?現在のコードと同様に、私はクライアントからデータを受信するループに入っています。
- 受信の進行中にサーバースレッドからコマンドを送信する方法がわかりません。たとえば、接続が確立されたら別のスレッド(コマンドを送信するため)が必要ですか?
- クライアントから継続的にデータを受信し、同時にコマンドを送信するにはどうすればよいですか?ユーザー入力に基づいて各クライアントにコマンドを送信します。(ユーザーがclient1にデータの送信を開始させたい場合は、STARTをclient1に送信する必要があります。ユーザーはclient1の送信を停止したいので、STOPをclient1に送信する必要があります。ユーザーがdata3cmdをクライアント4に送信したい場合はコマンドDATA3をclient4などに送信します。この場合、クライアントをどのように識別しますか?基本的に小さなプロトコルを形成します**
以下のコードは、ソケットでリッスンでき、クライアントが接続してデータを送信できる場所で機能しています。ユーザーが入力したコマンドを適切なクライアント(たとえばclient4)に送信し、同時に受信する方法がわかりません。