在Golang中,可以使用net包来实现UDP广播。代码示例:
go
// UDP服务器
serverAddr, err := net.ResolveUDPAddr("udp4", ":8000")
if err != nil {
log.Fatal(err)
}
serverConn, err := net.ListenUDP("udp4", serverAddr)
if err != nil {
log.Fatal(err)
}
// 广播地址
broadcastAddr, err := net.ResolveUDPAddr("udp4", "255.255.255.255:8000")
if err != nil {
log.Fatal(err)
}
for {
buf := make([]byte, 512)
n, addr, err := serverConn.ReadFromUDP(buf)
if err != nil {
log.Fatal(err)
}
serverConn.WriteToUDP(buf[:n], broadcastAddr) // 广播数据
}
服务器监听UDP端口,并在接收到数据时将其广播出去。广播地址使用UDP4协议的广播地址255.255.255.255来实现广播。
go
// UDP客户端
clientAddr, err := net.ResolveUDPAddr("udp4", ":9999")
if err != nil {
log.Fatal(err)
}
clientConn, err := net.DialUDP("udp4", clientAddr, serverAddr)
if err != nil {
log.Fatal(err)
}
_, err = clientConn.Write([]byte("Hello"))
if err != nil {
log.Fatal(err)
}
客户端连接到服务器的UDP地址,发送数据,然后就能接收到服务器广播回来的数据。