Anda mengalami TIME_WAIT
keadaan soket yang terhubung. Meskipun Anda telah menutup soketnya, konsekuensinya masih ada selama beberapa menit. Alasan untuk ini, serta tanda soket yang dapat Anda atur untuk menonaktifkan perilaku (SO_REUSEADDR), dijelaskan dalam FAQ soket panduan UNIX.
Singkatnya,
server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(...)
...
Coba tambahkan import sys dan akhiri aplikasi Anda dengan sys.exit(). Soket tetap dicadangkan hingga sistem yakin bahwa aplikasi ditutup. Anda dapat menjelaskannya secara eksplisit dengan sys.exit()
[sunting] Oh, oke. Saya cukup baru untuk soket sendiri. Jadi maksud Anda urutan ini tidak aman? Saya tidak bisa membayangkan cara lain untuk melakukannya. Anda harus menutup aplikasi Anda di beberapa titik, dengan beberapa teknik, bukan? Bagaimana cara melakukannya dengan benar?
server.shutdown(socket.SHUT_RDWR)
server.close()
sys.exit()