Go语言通过net包实现UDP通信,服务端使用ListenUDP监听并接收数据,客户端通过DialUDP发送消息并接收响应,利用goroutine可支持并发处理,适用于高性能、低延迟场景。

Go语言通过net包提供了对UDP协议的良好支持,适合实现轻量级、高性能的数据传输。下面是一个简单的Golang中使用*net.UDPConn进行UDP数据收发的示例,包括服务端接收和客户端发送操作。
UDP服务端:监听并接收数据
服务端绑定到指定地址和端口,持续监听来自客户端的UDP消息。
package mainimport ("fmt""net")
func main() {// 绑定本地地址和端口addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")if err != nil {panic(err)}
conn, err := net.ListenUDP("udp", addr)if err != nil { panic(err)}defer conn.Close()fmt.Println("UDP服务器已启动,监听 8080 端口...")buffer := make([]byte, 1024)for { n, clientAddr, err := conn.ReadFromUDP(buffer) if err != nil { fmt.Println("读取数据失败:", err) continue } fmt.Printf("收到来自 %s 的消息: %sn", clientAddr, string(buffer[:n])) // 回复确认消息 response := "收到: " + string(buffer[:n]) conn.WriteToUDP([]byte(response), clientAddr)}}
UDP客户端:发送数据并接收响应
客户端向服务端发送一条消息,并等待返回的响应。
package mainimport ("fmt""net""time")
func main() {serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")if err != nil {panic(err)}
conn, err := net.DialUDP("udp", nil, serverAddr)if err != nil { panic(err)}defer conn.Close()message := "Hello UDP Server"_, err = conn.Write([]byte(message))if err != nil { fmt.Println("发送失败:", err) return}fmt.Println("已发送消息:", message)// 设置读取超时conn.SetReadDeadline(time.Now().Add(5 * time.Second))buffer := make([]byte, 1024)n, _, err := conn.ReadFromUDP(buffer)if err != nil { fmt.Println("接收响应失败:", err) return}fmt.Println("收到回复:", string(buffer[:n]))}
关键点说明
地址解析:使用
net.ResolveUDPAddr将字符串格式的地址转换为*net.UDPAddr。立即学习“go语言免费学习笔记(深入)”;
音疯
音疯是昆仑万维推出的一个AI音乐创作平台,每日可以免费生成6首歌曲。
146 查看详情
![]()
连接方式差异:
ListenUDP用于服务端被动监听DialUDP创建一个已连接的UDP套接字,适合客户端连续通信也可以用conn.WriteToUDP()发送到任意目标地址无连接特性:UDP是无状态协议,每次通信都独立,适用于低延迟场景如音视频、心跳包等。
运行示例
先运行服务端,再运行客户端,观察输出:
服务端应打印“收到来自 ... 的消息”客户端应收到“收到: Hello UDP Server”
基本上就这些。UDP编程在Go中非常直接,结合
goroutine还能轻松实现并发处理多个客户端请求,不复杂但容易忽略错误处理和缓冲区大小控制。实际使用中建议加上日志和超时管理。以上就是Golang netUDP数据传输操作示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1138026.html
微信扫一扫
支付宝扫一扫