GNU/Linux >> Belajar Linux >  >> Linux

Soket python tidak menutup koneksi dengan benar

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()

Linux
  1. Cara:Pemrograman Socket dengan Python

  2. Cara Mengizinkan Koneksi Jarak Jauh ke Server Database MySQL

  3. Periksa koneksi terbuka atau tertutup? (dalam C di Linux)

  1. Bagaimana cara meningkatkan batas waktu Koneksi SSH

  2. Koneksi SMTP Server GoDaddy PHPMailer Ditolak

  3. Bagaimana menemukan ujung lain dari koneksi soket unix?

  1. Perbaiki ::Koneksi kesalahan SSH Linux ditolak

  2. Ubah batas waktu MySQL di server

  3. open() dengan Python tidak membuat file jika tidak ada