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 窗口,在控制台上打印一行新信息:
服务器端已开启!等待客户端的连接请求……
已成功接收数据:你好,服务器端!
ICP备案:
公安联网备案: