Turn the SO_LINGER socket option on and set the linger time to 0 seconds. This will cause TCP to abort the connection when it is closed, flush the data and send a RST. See section 7.5 and example 15.21 in UNP.
SO_LINGERを指定してtimeoutを0にすればsock bufにデータがあろうがRSTで通信を終えることができる。さらにTIME_WAITが増えることもなくなる。LAN内とかで絶対に遅延しないみたいな環境なら有効なのだろうか...実験とかに使う分には重宝しそうだけど。