Golang中如何实现UDP广播?代码举例讲解

在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地址,发送数据,然后就能接收到服务器广播回来的数据。