私はasio documentationにある非同期タイムアウトの例を見てきましたが、非同期読み取り(最大Nバイト)をタイムアウトにすることが可能かどうか疑問に思っていましたタイムアウトが発生した場合は、エラーコードの代わりにタイムアウトが発生するまで読み出したバイトのバッファを返します。ソケット - できるだけタイムアウトで読み取る
たとえば、10秒間のタイムアウトで1000バイトの読み取り(recv)を実行していて、10秒間に300バイトしか到着しない場合は、その300バイトが返されるようにしたいと思います。 asioを使って?あるいはバークレーソケットのインターフェースでさえ?
これは決して賢明なことではありません。あなたの外の問題は何ですか?ほぼ確実にそれに対するより良い解決策があります。 –
バークレーソケットの場合、バッファにデータがない場合はタイムアウトになるので、受信したNバイトまたは希望の時間が経過するまで読み取りを続けます。部分的な読み取りが終わるたびに、タイムアウト値と要求バイト数の両方を更新する必要があります。ブロッキングソケットを使用して非asioソリューションに興味があるかどうかわからないので、例を挙げません。 – tomasz