Go语言UDP通信详解(附带实例)
UDP(user datagram protocol,用户数据报协议)协议是 OSI(open system interconnect,开放式系统互连)参考模型中的一种无连接传输层协议,不需要建立连接就能直接发送和接收数据,属于不可靠的、没有时序的通信。但是,UDP 协议的实时性比较好,通常用于视频直播等相关领域。
下面演示如何编写简单的 UDP 服务端。代码如下:
下面演示如何编写 UDP 客户端。代码如下:
先运行 UDP 服务器端,在 UDP 服务端所在 VS Code 窗口的控制台上打印信息:
再运行 UDP 客户端,在 UDP 客户端所在 VS Code 窗口的控制台上打印如下信息:
打开 UDP 服务器端所在的 VS Code 窗口,在控制台上打印一行新信息:
Go语言UDP服务器端
在编写 UDP 服务器端时,一般按照如下步骤展开:- 定义通信的地址和端口;
- 使用 ListenUDP() 函数监听 UDP 的地址和端口信息并得到连接信息;
- 与 UDP 客户端进行交互通信。
下面演示如何编写简单的 UDP 服务端。代码如下:
package main import ( "fmt" "net" ) func main() { // 使用 net.ListenUDP() 函数监听连接的地址与端口 conn, err := net.ListenUDP("udp", &net.UDPAddr{ IP: net.IPv4(127, 0, 0, 1), Port: 3000, Zone: "", }) if err != nil { fmt.Println("监听失败!发生错误:", err) return } fmt.Println("服务端已开启!等待客户端的连接请求......") for { var data [1024]byte // 接收数据 count, addr, err := conn.ReadFromUDP(data[:]) if err != nil { fmt.Println("接收数据失败!发生错误:", err) continue } fmt.Printf("已成功接收数据:%s\n", data[:count]) // 发送数据 _, errs := conn.WriteToUDP([]byte("你好,客户端!"), addr) if errs != nil { fmt.Println("发送数据失败!发生错误:", errs) continue } } }
Go语言UDP客户端
UDP 服务器端编写完毕后,接下来要编写 UDP 客户端。在编写 UDP 客户端时,一般按照如下步骤展开:- 定义通信的地址和端口;
- 使用 DialUDP() 函数建立与服务器端的连接;
- 与 UDP 服务器端进行交互通信;
- 关闭 UDP 连接。
下面演示如何编写 UDP 客户端。代码如下:
package main import ( "fmt" "net" ) func main() { // 建立与服务端的 UDP 连接 conn, err := net.DialUDP("udp", nil, &net.UDPAddr{ IP: net.IPv4(127, 0, 0, 1), Port: 3000, Zone: "", }) if err != nil { fmt.Println("连接失败!发生错误:", err) return } fmt.Println("客户端向服务器端发送连接请求......") defer conn.Close() // 发送数据 sendData := []byte("你好,服务器端!") _, errs := conn.Write(sendData) if errs != nil { fmt.Println("发送数据失败!发生错误:", errs) return } // 接收数据 data := make([]byte, 4096) _, _, errors := conn.ReadFromUDP(data) if errors != nil { fmt.Println("接收数据失败!发生错误:", errors) return } fmt.Printf("已成功接收数据:%s\n", string(data)) }为了保证上述程序成功运行,要打开两个 VS Code 窗口:一个窗口是 UDP 服务器端,另一个窗口是 UDP 客户端。
先运行 UDP 服务器端,在 UDP 服务端所在 VS Code 窗口的控制台上打印信息:
服务端已开启!等待客户端的连接请求……
再运行 UDP 客户端,在 UDP 客户端所在 VS Code 窗口的控制台上打印如下信息:
客户端向服务器端发送连接请求……
已成功接收数据:你好,客户端!
打开 UDP 服务器端所在的 VS Code 窗口,在控制台上打印一行新信息:
服务器端已开启!等待客户端的连接请求……
已成功接收数据:你好,服务器端!