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

Go语言通过net包提供了对UDP协议的良好支持,适合实现轻量级、高性能的数据传输。下面是一个简单的Golang中使用*net.UDPConn进行UDP数据收发的示例,包括服务端接收和客户端发送操作。
服务端绑定到指定地址和端口,持续监听来自客户端的UDP消息。
package main
<p>import (
"fmt"
"net"
)</p><p>func main() {
// 绑定本地地址和端口
addr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
if err != nil {
panic(err)
}</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">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 的消息: %s\n", clientAddr, string(buffer[:n]))
// 回复确认消息
response := "收到: " + string(buffer[:n])
conn.WriteToUDP([]byte(response), clientAddr)
}}
客户端向服务端发送一条消息,并等待返回的响应。
package main
<p>import (
"fmt"
"net"
"time"
)</p><p>func main() {
serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080")
if err != nil {
panic(err)
}</p><pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;">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语言免费学习笔记(深入)”;
连接方式差异:
ListenUDP用于服务端被动监听DialUDP创建一个已连接的UDP套接字,适合客户端连续通信conn.WriteToUDP()发送到任意目标地址无连接特性:UDP是无状态协议,每次通信都独立,适用于低延迟场景如音视频、心跳包等。
先运行服务端,再运行客户端,观察输出:
基本上就这些。UDP编程在Go中非常直接,结合goroutine还能轻松实现并发处理多个客户端请求,不复杂但容易忽略错误处理和缓冲区大小控制。实际使用中建议加上日志和超时管理。
以上就是Golang netUDP数据传输操作示例的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号