議論が混乱しているみたいなので、整理してみる....
SO_KEEPALIVEの目的は二つある
・APの無通信状態が継続していてもTCPコネクションの自動切断を抑止する
==>「放置されても接続が破棄されにくくすることが出来る(
>>890)」
・下位層異常を検知してTCPコネクションを自動的に切断する
==> 「SO_KEEPALIVEを設定した(投げる)側だけが切断を検知できる(
>>885,893)」
つまり、
>>890と
>>885,893の指摘のどちらも「TCPコネクション接続後の自動切断処理」について
話しているから、両者の指摘はともに間違いではない
ただし、今の時代はWAN(広域ネットワーク)でも常時接続サービスが一般化しているから、
前者(
>>890の自動切断の抑止)を目的にSO_KEEPALIVEを設定するケースは極めて限られると思う
そして、「TCPコネクション接続時のエラー検知処理」にSO_KEEPALIVEを利用しようという
質問者(
>>881,886)の考え方が間違っている(=SO_KEEPALIVEの目的を誤解している)、と言える