経緯 TCPクライアントのローカル側ポートを固定にした状態で一旦コネクションした後、アプリを終了させ、すぐまた起動するとコネクションできないという問題が発生。色々調べていくとTIME_WAITという状態に陥っていることが原因のようだった。サーバーサイドはSO_REUSEADDRオプションをソケットオプションとして付加させることによってその問題を回避することができるようだったが、クライアントはそのオプションを付加しても問題が発生する。それはなぜか?という疑問があった。 TIME_WAIT 以下のサイトに詳しく乗っている。 ぜんぶTIME_WAITのせいだ! TCPの状態遷移 つまりは、アクティブクローズしたアプリケーションに対してネット上に漂うパケットが到着してしまってもちゃんと破棄できるようにするためのTCP上の機構で、TIME_WAITで一定時間待っておいて、他のソケットがそのポートを使