Apabila melakukan pengaturcaraan rangkaian, anda sering menghadapi keperluan untuk menetapkan tamat masa untuk mengelakkan tamat masa sambungan rangkaian yang mungkin menyebabkan ketinggalan. Menetapkan tamat masa rangkaian di Golang adalah sangat mudah Artikel ini akan membawa anda memahami kaedah tetapan tamat masa rangkaian di Golang.
1. Tamat masa rangkaian di Golang
Apabila berkomunikasi di rangkaian, kedua-dua pelanggan dan pelayan perlu menetapkan tamat masa tertentu untuk memastikan keteguhan program. Di Golang, tamat masa rangkaian boleh ditetapkan dalam dua cara:
Pakej konteks ialah pakej yang biasa digunakan, yang boleh digunakan untuk mengawal beberapa pembatalan Goroutine, tamat masa, tarikh akhir, dsb. Apabila menggunakan Konteks dalam pengaturcaraan rangkaian, kami boleh menetapkan tempoh tamat masa melalui kaedah WithDeadline atau WithTimeout yang mendasari, seperti yang ditunjukkan di bawah:
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() resp, err := http.Get("https://www.baidu.com") if err != nil { log.Fatalln(err) } defer resp.Body.Close()
Dalam kod di atas, kami menetapkan tempoh tamat masa selama 5 saat melalui WithTimeout kaedah. Apabila tamat masa mencapai, kami membatalkan Konteks ini melalui defer cancel(), supaya kod boleh keluar dalam masa.
Di Golang, kita boleh membuat sambungan tcp atau udp melalui net.Fungsi dail. Fungsi ini mempunyai berbilang borang terlebih beban, termasuk satu yang menetapkan tamat masa. Contohnya, untuk menetapkan sambungan tcp dengan tamat masa 5 saat, kita boleh menulis seperti ini:
conn, err := net.DialTimeout("tcp", "www.baidu.com:80", time.Second*5) if err != nil { log.Fatalln(err) }
Di sini kita menggunakan fungsi net.DialTimeout untuk mencipta sambungan tcp. Jika sambungan berjaya diwujudkan dalam masa 5 saat, objek net.Conn dikembalikan. Jika tidak, fungsi akan mengembalikan ralat, dan kami perlu keluar dari program dengan segera selepas ralat ini dikembalikan.
2. Bagaimana untuk memilih kaedah tamat masa
Jadi apabila melakukan pengaturcaraan rangkaian, kaedah manakah yang harus anda pilih untuk tetapan tamat masa? Ini bergantung pada konteks perniagaan tertentu.
Secara umum, menggunakan tamat masa Konteks ialah cara yang lebih disyorkan. Ini kerana menggunakan tamat masa Konteks boleh disepadukan dengan lebih mudah ke bahagian lain kod, seperti kawalan goroutine. Selain itu, melalui fungsi batal, kita boleh memahami status berjalan Konteks dengan lebih intuitif, supaya dapat mengendalikan ralat dengan lebih baik.
Walau bagaimanapun, dalam sesetengah senario, kaedah tamat masa net.Dail adalah lebih sesuai. Contohnya, apabila membuat permintaan http, kita boleh menggunakan struktur Pengangkutan di bawah pakej net/http untuk menggunakan semula kumpulan sambungan Pada masa ini, menggunakan kaedah net.Dial boleh mengawal status sambungan dengan lebih baik.
Ringkasnya, dalam pembangunan sebenar, kita perlu memutuskan kaedah yang hendak digunakan untuk tetapan tamat masa berdasarkan keperluan perniagaan tertentu.
3. Ringkasan
Melalui penjelasan artikel ini, saya percaya pembaca telah menguasai kaedah menetapkan tamat masa rangkaian di Golang. Apabila melakukan pengaturcaraan rangkaian, kita mesti sentiasa berwaspada untuk mengelakkan program terhenti akibat tamat masa sambungan rangkaian. Oleh itu, menetapkan tamat masa adalah sangat perlu, dan pembaca mesti menerapkannya.
Atas ialah kandungan terperinci Beritahu anda cara menetapkan tamat masa rangkaian di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!