UDP服务器端实现
package main
import (
"fmt"
"net"
)
func main() {
// 监听的UDP地址
addr := "127.0.0.1:8888"
// 解析UDP地址
udpAddr, err := net.ResolveUDPAddr("udp", addr)
if err != nil {
fmt.Println("Error resolving UDP address:", err)
return
}
// 创建UDP连接
conn, err := net.ListenUDP("udp", udpAddr)
if err != nil {
fmt.Println("Error listening:", err)
return
}
defer conn.Close()
fmt.Println("UDP server listening on", addr)
// 接收数据
buf := make([]byte, 1024)
for {
n, clientAddr, err := conn.ReadFromUDP(buf)
if err != nil {
fmt.Println("Error reading:", err)
continue
}
fmt.Printf("Received %d bytes from %s: %s\n", n, clientAddr, string(buf[:n]))
// 回复客户端
_, err = conn.WriteToUDP([]byte("Message received"), clientAddr)
if err != nil {
fmt.Println("Error replying to client:", err)
}
}
}
UDP客户端实现
package main
import (
"fmt"
"net"
)
func main() {
// 服务器UDP地址
serverAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:8888")
if err != nil {
fmt.Println("Error resolving server address:", err)
return
}
// 创建UDP连接
conn, err := net.DialUDP("udp", nil, serverAddr)
if err != nil {
fmt.Println("Error connecting:", err)
return
}
defer conn.Close()
fmt.Println("UDP client connected to server at", serverAddr)
// 发送数据
message := []byte("Hello UDP server!")
_, err = conn.Write(message)
if err != nil {
fmt.Println("Error sending message:", err)
return
}
// 接收回复
buf := make([]byte, 1024)
n, _, err := conn.ReadFromUDP(buf)
if err != nil {
fmt.Println("Error receiving reply:", err)
return
}
fmt.Println("Reply from server:", string(buf[:n]))
}