在现代网络编程中,Go语言UDP通信因其轻量、高效和并发友好而备受开发者青睐。Go标准库中的 net 包提供了强大且简洁的API,使得开发UDP客户端和服务器变得异常简单。本教程将手把手教你使用 Go 的 net 包实现基本的 UDP 通信,即使你是编程小白也能轻松上手!
UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议。它不保证数据包的顺序或可靠性,但具有低延迟、高效率的特点,适用于实时音视频、在线游戏、DNS查询等场景。
Go 的 net 包提供了 net.ListenUDP、net.DialUDP 等函数来创建 UDP 连接。下面我们分别实现一个简单的 UDP 服务器和客户端。
服务器监听指定端口,接收客户端消息并回显(echo)回去:
package mainimport ( "fmt" "net")func main() { // 监听本地 8080 端口的 UDP 连接 addr, err := net.ResolveUDPAddr("udp", ":8080") if err != nil { fmt.Println("解析地址失败:", err) return } conn, err := net.ListenUDP("udp", addr) if err != nil { fmt.Println("监听失败:", err) return } 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 } message := string(buffer[:n]) fmt.Printf("收到来自 %s 的消息: %s\n", clientAddr, message) // 回显消息给客户端 _, err = conn.WriteToUDP([]byte("Echo: "+message), clientAddr) if err != nil { fmt.Println("发送响应失败:", err) } }} 客户端向服务器发送消息并接收回显:
package mainimport ( "fmt" "net")func main() { // 连接到本地 8080 端口 serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8080") if err != nil { fmt.Println("解析服务器地址失败:", err) return } conn, err := net.DialUDP("udp", nil, serverAddr) if err != nil { fmt.Println("连接服务器失败:", err) return } defer conn.Close() message := "Hello from Go UDP Client!" _, err = conn.Write([]byte(message)) if err != nil { fmt.Println("发送消息失败:", err) return } buffer := make([]byte, 1024) n, err := conn.Read(buffer) if err != nil { fmt.Println("接收响应失败:", err) return } response := string(buffer[:n]) fmt.Println("收到服务器响应:", response)} 1. 先在终端运行服务器程序:
go run udp_server.go
2. 再打开另一个终端运行客户端:
go run udp_client.go
你将看到服务器打印收到的消息,客户端收到 “Echo: Hello from Go UDP Client!” 的响应。
ReadFromUDP 和 WriteToUDP 收发数据。ResolveUDPAddr 用于解析地址,ListenUDP 创建监听套接字。ReadFromUDP 返回)。通过本教程,你已经掌握了使用 Go 语言 net 包进行 UDP客户端服务器 开发的基础技能。这是 Go网络编程 的重要组成部分。后续你可以尝试添加超时控制、并发处理多个客户端、或结合 JSON 序列化传递结构化数据。
动手实践是掌握编程的最佳方式!快去写你的第一个 UDP 应用吧!
本文由主机测评网于2025-12-06发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025123770.html