golang udp服务端客户端例子
服务端:
package main import ( "fmt" "net" ) func main() { // 创建监听 socket,err := net.ListenUDP("udp4",&net.UDPAddr{ IP: net.IPv4(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),}) 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,err := socket.ReadFromUDP(data) if err != nil { fmt.Println("读取数据失败!",err) return } fmt.Println(read,remoteAddr) fmt.Printf("%s\n",data) }