SO_REUSEADDR
SO_REUSEADDR を使うと、TIME_WAIT に残ったアドレスにソケットをバインドでき、再起動したサーバーがポートをすぐに取り戻せる。
目的
閉じたばかりのポートの即時再バインドを許すことで、サーバー再起動時の "Address already in use" を回避する。
メカニズム
設定すると、bind() は接続がまだ TIME_WAIT のローカルアドレスを受け付ける。TIME_WAIT は 2MSL(約 60~120 秒)続き、通常は待つ必要がある。SO_REUSEPORT との違いに注意すること。
ユースケース
- サーバーの高速再起動
- ポートの再利用
- 開発とデバッグ