Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah Saya Boleh Mengesan Penutupan Sambungan TCP dalam Pakej `net` Go?

Bagaimanakah Saya Boleh Mengesan Penutupan Sambungan TCP dalam Pakej `net` Go?

Susan Sarandon
Lepaskan: 2024-12-16 21:52:15
asal
649 orang telah melayarinya

How Can I Detect TCP Connection Closure in Go's `net` Package?

Cara Menentukan Penutupan Sambungan TCP Menggunakan Pakej Net

Masalah:

Apabila melaksanakan pelayan TCP, adalah penting untuk mengetahui apabila pelanggan menutup sambungan mereka. Bagaimanakah anda boleh menentukan perkara ini menggunakan pakej bersih?

Jawapan:

Untuk mengesan sambungan TCP tertutup, anda boleh menggunakan kaedah berikut:

one := make([]byte, 1)
c.SetReadDeadline(time.Now())
if _, err := c.Read(one); err == io.EOF {
  // Connection closed
} else {
  // Connection still open
}
Salin selepas log masuk

Pendekatan ini melibatkan:

  1. Mencipta penimbal bait tunggal (satu).
  2. Menetapkan tarikh akhir baca pada sambungan (c) kepada masa semasa untuk memaksa bacaan segera.
  3. Membaca bait daripada sambungan.
  4. Menyemak kesilapan itu; jika ia adalah io.EOF, sambungan telah ditutup.

Pengesanan Tamat Masa:

Untuk mengesan tamat masa, anda boleh menyemak sama ada ralat adalah jaringan. Ralat dengan tamat masa.

if neterr, ok := err.(net.Error); ok && neterr.Timeout() {
  // Timeout occurred
}
Salin selepas log masuk

Kemas kini (Go 1.7 ):

Dalam Go 1.7 , bacaan sifar-bait kembali serta-merta dan tidak pernah mengakibatkan ralat. Untuk mengambil kira perkara ini, anda perlu membaca sekurang-kurangnya satu bait.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Penutupan Sambungan TCP dalam Pakej `net` Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan