これは、Linux カーネル 2.6 の TCP ソケットに関するものです。
一度に 8 MB を受信する別のクライアントにノンブロッキング送信を使用して、300 MB などの大量のデータを送信しています。
8 MB を 1 回受信すると、「受信側」は受信を停止します。これは、エラー処理などの他のタスクを実行する必要があるためです。送信者は EWOULDBLOCK を受け取りますが、これは非同期通信であるため、送信側は相手側の TCP recv バッファーをいっぱいにしようとします。
私の質問は次のとおりです。「送信者」が EWOULDBLOCK を取得し、「受信者」が受信を停止しても、TCP recv バッファーにデータが残っていますか? 同じソケットがエラー処理に使用されるため、「レシーバー」は既存のソケットを再利用する前に TCP recv バッファーをクリアする必要がありますか?