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 }
Pendekatan ini melibatkan:
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 }
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!