PracticeDev/study_go/udp/client.go

52 lines
1.1 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
}