Untuk menguasai perkara utama dan pengalaman praktikal pengaturcaraan rangkaian bahasa Go, contoh kod khusus diperlukan
1 Perkara utama pengaturcaraan rangkaian bahasa Go
Pengaturcaraan rangkaian merujuk kepada. penggunaan rangkaian komputer untuk komunikasi Teknologi Pengaturcaraan. Dalam bahasa Go, kita boleh menggunakan pakej bersih dalam perpustakaan standard untuk pengaturcaraan rangkaian, termasuk mencipta dan mengurus sambungan TCP dan UDP, dan merealisasikan interaksi antara pelayan dan klien.
Dalam bahasa Go, soket diwakili dan dikendalikan menggunakan antara muka dalam pakej bersih. Anda boleh mencipta soket pada alamat yang ditentukan dengan memanggil fungsi Dengar dan gunakan kaedah Terima untuk menerima permintaan sambungan daripada klien. Selepas menerima sambungan, data boleh dibaca dan ditulis melalui kaedah Baca dan Tulis.
Berikut ialah contoh kod pelayan TCP yang mudah untuk membina pelayan yang mendengar pada port tempatan 8080:
package main import ( "fmt" "net" ) func handleConn(conn net.Conn) { defer conn.Close() // 处理连接 // ... } func main() { listener, err := net.Listen("tcp", "localhost:8080") if err != nil { fmt.Println("Error listening:", err.Error()) return } defer listener.Close() fmt.Println("Server is listening on localhost:8080") for { conn, err := listener.Accept() if err != nil { fmt.Println("Error accepting:", err.Error()) return } go handleConn(conn) } }
Contoh, sambung ke port tempatan 8080 dan hantar data:
package main import ( "fmt" "net" ) func main() { conn, err := net.Dial("tcp", "localhost:8080") if err != nil { fmt.Println("Error dialing:", err.Error()) return } defer conn.Close() // 发送数据 // ... // 接收数据 // ... }
Selain TCP, bahasa Go juga menyokong protokol UDP. UDP ialah protokol penghantaran tanpa sambungan yang mempunyai overhed yang lebih rendah dan kelajuan penghantaran yang lebih tinggi daripada TCP.
Berikut ialah contoh kod pelayan UDP yang mudah:
package main import ( "fmt" "net" ) func main() { conn, err := net.ListenPacket("udp", ":8080") if err != nil { fmt.Println("Error listening:", err.Error()) return } defer conn.Close() buffer := make([]byte, 1024) for { n, addr, err := conn.ReadFrom(buffer) if err != nil { fmt.Println("Error reading:", err.Error()) return } fmt.Printf("Received '%s' from %s ", string(buffer[:n]), addr.String()) } }
Berikut ialah contoh kod klien UDP yang mudah:
package main import ( "fmt" "net" ) func main() { serverAddr, err := net.ResolveUDPAddr("udp", "localhost:8080") if err != nil { fmt.Println("Error resolving address:", err.Error()) return } conn, err := net.DialUDP("udp", nil, serverAddr) if err != nil { fmt.Println("Error dialing:", err.Error()) return } defer conn.Close() // 发送数据 // ... // 接收数据 // ... }
2. Pengalaman praktikal dalam pengaturcaraan rangkaian bahasa Go
Atas ialah kandungan terperinci Pengetahuan utama dan panduan praktikal untuk pengaturcaraan rangkaian dalam bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!