Rumah >pembangunan bahagian belakang >Golang >pelaksanaan perpustakaan tcp golang
Bahasa Go ialah bahasa pengaturcaraan yang semakin popular. Ia telah menjadi tumpuan perhatian semua orang dengan gaya pengekodan yang cekap dan ringkas, konkurensi semula jadi dan model pengaturcaraan serentak. Untuk komunikasi protokol TCP, bahasa Go menyediakan beberapa perpustakaan terbina dalam untuk membantu kami melaksanakan komunikasi TCP, seperti net, net/http, dsb.
Artikel ini akan menerangkan dari peringkat pelaksanaan cara menggunakan perpustakaan soket bahasa Go untuk melaksanakan komunikasi TCP.
TCP ialah Protokol Kawalan Penghantaran, yang merupakan protokol penghantaran berasaskan aliran bait yang berorientasikan sambungan, boleh dipercayai. Dalam protokol TCP, tiga jabat tangan diperlukan sebelum data dihantar untuk memastikan penghantaran data yang betul. Semasa proses penghantaran data, TCP juga menyediakan beberapa pengesahan data, penghantaran semula dan mekanisme lain untuk memastikan kebolehpercayaan data. Oleh itu, TCP juga dipanggil protokol pengangkutan yang boleh dipercayai.
Bahasa Go menyediakan pustaka soket asli, yang terutamanya merangkumi tiga pakej: net, net/http dan net/rpc. Antaranya, pakej bersih menyediakan antara muka operasi komunikasi rangkaian yang paling asas, termasuk alamat IP, protokol TCP/UDP, dan lain-lain pakej bersih/http menyediakan antara muka operasi rangkaian yang berkaitan dengan protokol HTTP; rangka kerja panggilan.
Dalam pakej bersih, terdapat dua jenis utama: Conn dan Listener. Antaranya, Conn mewakili komunikasi berorientasikan sambungan Kedua-dua pelanggan dan pelayan boleh mempunyai objek Conn boleh merealisasikan komunikasi antara dua komputer mewakili pendengar port rangkaian, yang boleh digunakan untuk memantau dan memproses permintaan Pautan pelanggan , kembalikan objek Conn untuk mencapai komunikasi.
Selepas memahami protokol TCP dan pustaka soket bahasa Go, kita boleh mula menggunakan pustaka soket bahasa Go untuk melaksanakan komunikasi TCP. Berikut menggunakan contoh mudah untuk menerangkan cara menggunakan perpustakaan soket untuk melaksanakan komunikasi TCP.
Mari kita lihat dahulu cara melaksanakan program sebelah pelayan TCP yang mudah. Kod sampel adalah seperti berikut:
package main import ( "fmt" "net" ) func main() { listener, err := net.Listen("tcp", "127.0.0.1:8888") if err != nil { fmt.Println("Error: ", err) return } for { conn, err := listener.Accept() if err != nil { fmt.Println("Error: ", err) continue } go handleConn(conn) } } func handleConn(conn net.Conn) { defer conn.Close() buf := make([]byte, 1024) for { n, err := conn.Read(buf) if err != nil { fmt.Println("Error: ", err) return } fmt.Println("Receive: ", string(buf[:n])) _, err = conn.Write(buf[:n]) if err != nil { fmt.Println("Error: ", err) return } } }
Dalam program sampel ini, kami menggunakan fungsi Listen bagi pakej bersih untuk mendengar port 8888 tempatan, dan menggunakan gelung for dalam fungsi utama untuk terus menunggu sehingga permintaan pautan pelanggan. Setelah permintaan sambungan diperoleh, coroutine baharu dibuat untuk mengendalikan permintaan sambungan, dengan itu membolehkan pemprosesan serentak berbilang pelanggan.
Dalam fungsi handleConn, kami mula-mula menggunakan defer untuk memastikan pautan semasa akan ditutup selepas program dilaksanakan, kemudian gunakan fungsi Baca untuk membaca data daripada klien, dan gunakan fungsi Tulis untuk menghantar data kepada pelanggan, mencapai fungsi Echo yang mudah.
Seterusnya, mari kita lihat cara melaksanakan program klien TCP yang mudah. Kod sampel adalah seperti berikut:
package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("tcp", "127.0.0.1:8888") if err != nil { fmt.Println("Error: ", err) return } defer conn.Close() _, err = conn.Write([]byte("Hello World!")) if err != nil { fmt.Println("Error: ", err) return } buf := make([]byte, 1024) n, err := conn.Read(buf) if err != nil { fmt.Println("Error: ", err) return } fmt.Println("Receive: ", string(buf[:n])) }
Dalam program contoh ini, kami menggunakan fungsi Dail pakej bersih untuk menyambung ke pelayan, menghantar sekeping data ke pelayan dan menggunakan fungsi Baca untuk membaca data yang dikembalikan oleh pelayan. Jika tiada ralat berlaku, cetak data yang dikembalikan oleh pelayan.
Melalui penjelasan artikel ini, kami telah mempelajari pengetahuan asas protokol TCP dan pelaksanaan perpustakaan soket dalam bahasa Go. Pada masa yang sama, kami juga menunjukkan cara menggunakan perpustakaan soket bahasa Go untuk melaksanakan komunikasi TCP melalui program sampel mudah. Dalam pembangunan sebenar, senario aplikasi yang berbeza mungkin memerlukan penggunaan komunikasi TCP, dan menguasai keupayaan untuk menggunakan perpustakaan soket akan menjadi salah satu kemahiran penting untuk pengaturcara.
Atas ialah kandungan terperinci pelaksanaan perpustakaan tcp golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!