Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk memprogram menggunakan UDP dalam Go?
UDP (User Datagram Protocol) ialah protokol berorientasikan tanpa sambungan dan merupakan protokol yang sangat penting dalam lapisan pengangkutan. Ia boleh menghantar data terus kepada hos sasaran tanpa membuat sambungan, jadi ia digunakan secara meluas dalam penghantaran data masa nyata, permainan dan aplikasi lain, dan lebih sesuai daripada TCP dalam beberapa senario.
Menggunakan pengaturcaraan UDP dalam bahasa Go juga sangat mudah. Artikel ini akan memperkenalkan cara menggunakan pengaturcaraan UDP dalam bahasa Go.
Dalam protokol UDP, data dikapsulkan ke dalam paket UDP, juga dipanggil datagram. Datagram mengandungi nombor port sumber, nombor port destinasi, panjang, checksum dan maklumat lain.
Dalam bahasa Go, UDPConn pakej bersih boleh digunakan untuk membaca dan menulis datagram UDP.
Dalam atur cara pelayan UDP, anda perlu mencipta alamat UDP terlebih dahulu, iaitu, gunakan kaedah ResolveUDPAddr dalam pakej bersih, yang menerima dua parameter, masing-masing jenis protokol dan alamat pelayan.
Kemudian, gunakan kaedah ListenUDP dalam pakej bersih untuk mendengar alamat Kaedah ini akan mengembalikan objek UDPConn, yang boleh digunakan untuk menerima dan menghantar datagram UDP.
Langkah seterusnya ialah proses membaca datagram Gunakan kaedah ReadFromUDP objek UDPConn untuk membaca datagram yang dihantar oleh klien Kaedah ini akan menyekat sehingga datagram diterima dan mengembalikan objek ralat dan datagram objek. Selepas membaca data, anda boleh mengeluarkan data dan memproses data, seperti mengira nilai cincang data. Kemudian gunakan kaedah WriteToUDP objek UDPConn untuk menghantar datagram tindak balas kepada klien.
Berikut ialah program pelayan UDP yang mudah:
package main import ( "fmt" "net" ) func main() { ip := net.ParseIP("127.0.0.1") addr := &net.UDPAddr{ IP: ip, Port: 8080, } conn, err := net.ListenUDP("udp", addr) if err != nil { fmt.Println(err) return } defer conn.Close() fmt.Println("UDP server listening on port ", addr.Port) for { data := make([]byte, 1024) n, addr, err := conn.ReadFromUDP(data) if err != nil { fmt.Println("Error: ", err) continue } fmt.Printf("Received from %s:%d : %s ", addr.IP.String(), addr.Port, string(data[:n])) reply := []byte("Hello from UDP server") conn.WriteToUDP(reply, addr) } }
Dalam program klien UDP, anda perlu membuat Alamat UDP, iaitu, gunakan kaedah ResolveUDPAddr dalam pakej bersih Kaedah ini menerima dua parameter, iaitu jenis protokol dan alamat pelayan.
Kemudian, gunakan kaedah DialUDP untuk menyambung ke alamat pelayan, yang akan mengembalikan objek UDPConn, yang boleh digunakan untuk menghantar datagram UDP ke pelayan.
Langkah seterusnya ialah menghantar datagram ke pelayan Gunakan kaedah Tulis objek UDPConn untuk menghantar datagram ke pelayan.
Kemudian, gunakan kaedah ReadFromUDP objek UDPConn untuk membaca datagram tindak balas daripada pelayan Kaedah ini akan menyekat sehingga datagram diterima dan mengembalikan objek ralat dan objek datagram. Selepas membaca data, anda boleh mengeluarkan data.
Berikut ialah program klien UDP yang mudah:
package main import ( "fmt" "net" ) func main() { ip := net.ParseIP("127.0.0.1") addr := &net.UDPAddr{ IP: ip, Port: 8080, } conn, err := net.DialUDP("udp", nil, addr) if err != nil { fmt.Println(err) return } defer conn.Close() fmt.Printf("UDP client connected to %s:%d ", addr.IP.String(), addr.Port) message := []byte("Hello from UDP client") _, err = conn.Write(message) if err != nil { fmt.Println(err) return } buffer := make([]byte, 1024) n, _, err := conn.ReadFromUDP(buffer) if err != nil { fmt.Println(err) return } fmt.Printf("Response from server: %s ", string(buffer[:n])) }
Dalam bahasa Go, pengaturcaraan dengan UDP adalah sangat mudah, hanya gunakan The UDPConn objek dalam pakej bersih boleh membaca dan menulis datagram UDP. Artikel ini memperkenalkan cara menulis program pelayan UDP dan program klien UDP, dan menyediakan contoh kod yang sepadan. Apabila anda perlu menjalankan penghantaran data masa nyata, permainan dan aplikasi lain, anda boleh mempertimbangkan untuk menggunakan protokol UDP.
Atas ialah kandungan terperinci Bagaimana untuk memprogram menggunakan UDP dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!