這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
golang udp服務端用戶端例子
服務端:
package mainimport ( "fmt" "net")func main() { // 建立監聽 socket, err := net.ListenUDP("udp4", &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 8080, }) if err != nil { fmt.Println("監聽失敗!", err) return } defer socket.Close() for { // 讀取資料 data := make([]byte, 4096) read, remoteAddr, err := socket.ReadFromUDP(data) if err != nil { fmt.Println("讀取資料失敗!", err) continue } fmt.Println(read, remoteAddr) fmt.Printf("%s\n\n", data) // 發送資料 senddata := []byte("hello client!") _, err = socket.WriteToUDP(senddata, remoteAddr) if err != nil { return fmt.Println("發送資料失敗!", err) } }}
用戶端:
package mainimport ( "fmt" "net")func main() { // 建立串連 socket, err := net.DialUDP("udp4", nil, &net.UDPAddr{ IP: net.IPv4(192, 168, 1, 103), Port: 8080, }) if err != nil { fmt.Println("串連失敗!", err) return } defer socket.Close() // 發送資料 senddata := []byte("hello server!") _, err = socket.Write(senddata) if err != nil { fmt.Println("發送資料失敗!", err) return } // 接收資料 data := make([]byte, 4096) read, remoteAddr, err := socket.ReadFromUDP(data) if err != nil { fmt.Println("讀取資料失敗!", err) return } fmt.Println(read, remoteAddr) fmt.Printf("%s\n", data)}