以下是一个简单的UDP监控程序实现:
package main
import (
"fmt"
"net"
)
func main() {
addr, err := net.ResolveUDPAddr("udp", ":8888")
if err != nil {
fmt.Println("Error: ", err)
return
}
conn, err := net.ListenUDP("udp", addr)
if err != nil {
fmt.Println("Error: ", err)
return
}
defer conn.Close()
buffer := make([]byte, 1024)
for {
n, addr, err := conn.ReadFromUDP(buffer)
if err != nil {
fmt.Println("Error: ", err)
continue
}
fmt.Printf("Received %d bytes from %v: %s\n", n, addr, string(buffer[:n]))
}
}
这个程序首先通过net.ResolveUDPAddr()函数解析本地地址和端口,然后通过net.ListenUDP()函数监听该地址和端口。在循环中,它使用conn.ReadFromUDP()函数从连接中读取数据,并将其打印到控制台上。
要测试此程序,请运行它并使用任何支持UDP的工具(例如netcat)向本地端口发送数据。例如:
echo "Hello World" | nc -u localhost 8888
您应该会看到类似于以下内容的输出:
Received 12 bytes from 127.0.0.1:53370: Hello World




