LinuxでTCPソケットからデータを取得するインターフェイスを作成しています。ユーザは、受信したデータが格納されるバッファを提供する。提供されたバッファが小さい場合、私はエラーを返すだけです。第1の問題は、バッファが小さいかどうかを判断することです。 recv()関数はバッファに実際に書き込まれたバイト数を返します。 recv()のマンページに記載されているMSG_TRUNCフラグを使用すると、それでも私には同じものが返されます。第2の問題は、まだソケットに入れられているデータを破棄することです。私の提供するバッファが小さくて済むと判断したら、ソケットに残っているものをすべて消去したいだけです。閉じてソケットをもう一度開くか、何も残らないうちに受信する以外の方法はありますか?最高の敬具<ソケットにデータが残っているかどうかを確認して破棄します。
1つの提案は、何も残されない(私は0が返される)までrecvすることです - しかし、それはプリセットタイムアウト(この場合は5秒ですか? recvそれはデータまたはタイムアウトを待っていますか?
説明/説明ビットは不要です。あなたの質問をしてください。 – vezult
元の投稿へのリンクを教えてください。 – jweyrich