golang udp服務端客戶端例子
服務端:
package main import ( "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 main import ( "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) }