socketを開いて、bindしてacceptして closeした直後に、同一 port を bindしたところ bind: Address already in useというエラーになった。 socketの close ミスかと思ってデバッグしても原因が分からず、いろいろ検索していたら分かった。 デフォルトの動作では、closeしてもしばらくの間ソケットが開放されないらしい。 これを回避するには setsockopt で SO_REUSEADDRを指定する必要がある。 超バッドノウハウ。。。 const int one = 1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int));