PracticeDev/study_go/udp/client.go

52 lines
1.1 KiB
Go
Raw Permalink Normal View History

2022-12-20 17:31:11 +08:00
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)
}