52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
|
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)
|
|||
|
}
|