Go UDP服务端核心是net.ListenUDP绑定地址后循环ReadFromUDP读包;需预设缓冲区、处理addr并WriteToUDP回复;退出前调用Close释放资源。
用 Go 写 UDP 服务端很简单,核心就是调用 net.ListenUDP 绑定地址,再用循环读取数据包。
UDP 是无连接协议,不需要 accept,直接监听即可。常用方式是:
:8080 表示监听所有网卡的 8080 端口net.ListenUDP 返回一个 *net.UDPConn 对象net.ListenUDP("udp", &net.UDPAddr{Port: 0}) 让系统自动分配空闲端口UDP 每次收发都是独立的数据报(
datagram),需为每次读取准备足够大的缓冲区(通常 1024 或 65535 字节):
conn.ReadFromUDP(buf) 阻塞读取,返回实际读到的字节数和发送方地址buf[:n] 做安全截取,避免越界访问UDP 支持单播回复,只需用上一步拿到的 *net.UDPAddr:
conn.WriteToUDP([]byte("hello"), addr) 即可发回服务运行中一般不主动关闭,但退出前应释放连接:
conn.Close() 释放 socket 资源os.Interrupt)中优雅关闭是常见做法基本上就这些。UDP Server 不复杂但容易忽略错误处理和缓冲区边界,写的时候多留心。