Notice : 内容無保証。禁無断転載。リンク自由。

how=1 shutdown() の使い方

how=1 shutdown() は、close() と異なり、必ず FIN が出るので、close() で FIN が出ずにデッドロックする場面で有効に使えます。

とりあえず shutdown() を使ってみた例。(別に close() でもかまわない例)

close() だとデッドロックしてしまう例。
クライアント側が 送信専用プロセスと受信専用プロセスに分かれています。

どこかに "一定時間受信が無ければ強制切断" みたいな処理が入ってない場合、いつまでもこのまま…。
(前の絵では書いてた 3-way handshake とか、FIN に対する ACK とかは略。以下同じ。)

shutdown() を使って上のデッドロックを回避した例。