チャット アプリケーションを実装しようとしていますが、ピア間のメッセージング交換に TCP または UDP を使用する設計上の選択があります。TCP を使用したいのですが、次の問題があります。
問題のシナリオ: ピア A は既知のポート (5555 など) でリッスンしています。ピア B がピア A にメッセージを送信する場合、ピア A のポート 5555 に接続します。ピア A は接続を受け入れ、新しいスレッドを開始してピア B との通信を処理します。これにより、他のピア (ピア C など) がピア A の 5555 ポートに接続します。問題は、要求/応答プロトコルではないことです。そのため、ピア A が何らかの理由でピア B に応答しない場合、B によって送信された後続のメッセージがピア A のポート 5555 に配信されることに混乱していますか? ピア A は、受信したメッセージごとに個別のスレッドを作成しますか?
UDP を使用すると、おそらくこの問題は解決されます。各ピアと通信するために個別のスレッドを作成する必要はなく、誰もが同じウェルノウン ポートにメッセージを送信できます。しかし、メッセージが配信されることを保証するために TCP を使用したいと考えています。この問題を処理し、1 つのピアとの通信に 1 つのスレッドのみを使用するための良い方法は何ですか?