GNU/Linux >> Belajar Linux >  >> Linux

Kesalahan:Alamat sudah digunakan saat mengikat soket dengan alamat tetapi nomor port ditampilkan gratis oleh `netstat`

Saya juga mengalami masalah yang sama. Itu karena Anda menutup koneksi Anda ke soket, tetapi bukan soket itu sendiri. Soket dapat memasuki status TIME_WAIT (untuk memastikan semua data telah dikirim, TCP menjamin pengiriman jika memungkinkan) dan memerlukan waktu hingga 4 menit untuk dirilis.

atau, untuk penjelasan teknis/SANGAT mendetail, periksa tautan ini

Ini tentu mengganggu, tapi itu bukan bug. Lihat komentar dari @Vereb pada jawaban di bawah ini tentang penggunaan SO_REUSEADDR .


Coba netstat seperti ini:netstat -ntp , tanpa -l . Ini akan menunjukkan koneksi tcp di TIME_WAIT negara bagian.


Saya tahu sudah lama sejak pertanyaan diajukan tetapi saya dapat menemukan solusinya:

int sockfd;
int option = 1;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &option, sizeof(option));

Ini mengatur soket dapat segera digunakan kembali.

Saya minta maaf jika ini "salah". Saya tidak terlalu berpengalaman dengan soket


Linux
  1. Linux – Bagaimana Cara Memasang Sistem File Jarak Jauh Dengan Menentukan Nomor Port?

  2. Ikatan gagal:Alamat sudah digunakan

  3. Bagaimana cara mengontrol alamat IP sumber dari paket ZeroMQ pada mesin dengan banyak IP?

  1. Bagaimana Anda menggunakan ekspresi reguler dengan perintah cp di Linux?

  2. Waktu Pembaruan :ntpdate[3108]:soket NTP sedang digunakan, keluar

  3. Bagaimana cara menentukan jumlah slot RAM yang digunakan?

  1. Ubah nomor port server SSH default

  2. Ikat ke port 22 pada 0.0.0.0 gagal:alamat sudah digunakan – kesalahan saat memulai layanan sshd CentOS/RHEL

  3. Periksa Jumlah koneksi aktif pada port 80?