TIME_WAIT
が発生しています 接続されたソケットの状態。ソケットを閉じても、数分間は影響が残ります。この理由と、動作を無効にするために設定できるソケット フラグ (SO_REUSEADDR) については、UNIX ガイドのソケット FAQ で説明されています。
要するに、
server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(...)
...
import sys を追加して、sys.exit() でアプリを終了してみてください。アプリケーションが閉じられたことをシステムが確認するまで、ソケットは予約されたままになります。 sys.exit() でそれについて明示できます
[編集]ああ、わかりました。私は自分自身でソケットにかなり慣れていません。つまり、このシーケンスは安全ではないと言っているのですか?私はそれを行う他の方法を想像することはできません。何らかのテクニックを使って、ある時点でアプリを閉じる必要がありますよね?では、どうすれば正しく行われるのでしょうか?
server.shutdown(socket.SHUT_RDWR)
server.close()
sys.exit()