SO_SNDTIMEOとSO_RCVTIMEOを使用してタイムアウトを確認する方法を学習しています。読み取りソケットで使いやすいです。しかし、書き込みタイムアウトを確認したいときは、常に成功を返します。これが私がしたことです:(すべてブロッキングモードで)
- サーバーが書き込みを開始する前に、クライアントの読み取りソケットを閉じて終了します
- サーバーが書き込みを開始する前にクライアントを終了する
- 受け入れ後、書き込み前にサーバーのケーブルを抜きます
まあ、これらのケース書き込みはすべて正常に返されたようです。その理由は、ポートがOSによって管理されるリソースであり、クライアント側では、プログラムがなくなった後もtcp接続がFIN_WAIT2状態を示しているためだと思います。
それで、書き込みがEPIPE、EAGAINなどのエラーを受け取る可能性があるいくつかのケースをシミュレートする便利な方法はありますか?