登录
首页 >  Golang >  Go教程

GolangnetUDP数据传输实例教程

时间:2026-01-10 16:09:46 329浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《Golang netUDP数据传输教程示例》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

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

Golang netUDP数据传输操作示例

Go语言通过net包提供了对UDP协议的良好支持,适合实现轻量级、高性能的数据传输。下面是一个简单的Golang中使用*net.UDPConn进行UDP数据收发的示例,包括服务端接收和客户端发送操作。

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"><code>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)
}</code>

}

UDP客户端:发送数据并接收响应

客户端向服务端发送一条消息,并等待返回的响应。

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"><code>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]))</code>

}

关键点说明

地址解析:使用net.ResolveUDPAddr将字符串格式的地址转换为*net.UDPAddr

连接方式差异:

  • ListenUDP用于服务端被动监听
  • DialUDP创建一个已连接的UDP套接字,适合客户端连续通信
  • 也可以用conn.WriteToUDP()发送到任意目标地址

无连接特性:UDP是无状态协议,每次通信都独立,适用于低延迟场景如音视频、心跳包等。

运行示例

先运行服务端,再运行客户端,观察输出:

  • 服务端应打印“收到来自 ... 的消息”
  • 客户端应收到“收到: Hello UDP Server”

基本上就这些。UDP编程在Go中非常直接,结合goroutine还能轻松实现并发处理多个客户端请求,不复杂但容易忽略错误处理和缓冲区大小控制。实际使用中建议加上日志和超时管理。

好了,本文到此结束,带大家了解了《GolangnetUDP数据传输实例教程》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>