package main import ( "fmt" "net" "bytes" "encoding/gob" ) type Broadcast struct { name string desc string code int32 } func (b Broadcast) toByte() []byte { var buf bytes.Buffer enc := gob.NewEncoder(&buf) err := enc.Encode(b) if err != nil { panic(err) } return buf.Bytes() } // UDP 客户端 func main() { socket, err := net.DialUDP("udp", nil, &net.UDPAddr{ IP: net.IPv4(0, 0, 0, 0), Port: 30000, }) if err != nil { fmt.Println("连接服务端失败,err:", err) return } defer socket.Close() // sendData := []byte("Hello server") sendData := Broadcast{"hhh", "halppy", 1} _, err = socket.Write(sendData.toByte()) // 发送数据 if err != nil { fmt.Println("发送数据失败,err:", err) return } data := make([]byte, 4096) n, remoteAddr, err := socket.ReadFromUDP(data) // 接收数据 if err != nil { fmt.Println("接收数据失败,err:", err) return } fmt.Printf("recv:%v addr:%v count:%v\n", string(data[:n]), remoteAddr, n) }