From d2a4c831a4e10133c6ebb376d7e8243c23bdb8d2 Mon Sep 17 00:00:00 2001
From: yumaojun03 <719118794@qq.com>
Date: Sun, 29 Mar 2026 17:54:32 +0800
Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0udp?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
day09/goroutine/arch.drawio | 18 +++++++++++++++++
day09/tcp/flow.drawio | 22 +++++++++++++++-----
day09/upd/README.md | 2 ++
day09/upd/client/README.md | 2 ++
day09/upd/client/main.go | 39 ++++++++++++++++++++++++++++++++++++
day09/upd/server/README.md | 2 ++
day09/upd/server/main.go | 40 +++++++++++++++++++++++++++++++++++++
7 files changed, 120 insertions(+), 5 deletions(-)
create mode 100644 day09/upd/README.md
create mode 100644 day09/upd/client/README.md
create mode 100644 day09/upd/client/main.go
create mode 100644 day09/upd/server/README.md
create mode 100644 day09/upd/server/main.go
diff --git a/day09/goroutine/arch.drawio b/day09/goroutine/arch.drawio
index 99eedd9..05c6869 100644
--- a/day09/goroutine/arch.drawio
+++ b/day09/goroutine/arch.drawio
@@ -79,6 +79,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/day09/tcp/flow.drawio b/day09/tcp/flow.drawio
index df6c1ca..2de77ea 100644
--- a/day09/tcp/flow.drawio
+++ b/day09/tcp/flow.drawio
@@ -1,11 +1,11 @@
-
+
-
-
+
+
@@ -26,7 +26,7 @@
-
+
@@ -41,7 +41,7 @@
-
+
@@ -63,6 +63,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/day09/upd/README.md b/day09/upd/README.md
new file mode 100644
index 0000000..f3e1f86
--- /dev/null
+++ b/day09/upd/README.md
@@ -0,0 +1,2 @@
+# UDP编程
+
diff --git a/day09/upd/client/README.md b/day09/upd/client/README.md
new file mode 100644
index 0000000..5ad9170
--- /dev/null
+++ b/day09/upd/client/README.md
@@ -0,0 +1,2 @@
+# 客户端
+
diff --git a/day09/upd/client/main.go b/day09/upd/client/main.go
new file mode 100644
index 0000000..b2b1d3c
--- /dev/null
+++ b/day09/upd/client/main.go
@@ -0,0 +1,39 @@
+package main
+
+import (
+ "fmt"
+ "io"
+ "net"
+)
+
+func main() {
+ // 1. 连接服务器
+ conn, err := net.Dial("udp", "localhost:9999")
+ if err != nil {
+ fmt.Println("Error connecting:", err)
+ return
+ }
+ defer conn.Close()
+ fmt.Println("Connected to server")
+
+ // 2. 发送数据
+ _, err = conn.Write([]byte("Hello, Server! I am a client."))
+ if err != nil {
+ fmt.Println("Error writing data:", err)
+ return
+ }
+ fmt.Println("Written 22 bytes:", "Hello, Server! I am a client.")
+
+ // 3. 接收数据
+ buf := make([]byte, 1500)
+ n, err := conn.Read(buf)
+ if err == io.EOF {
+ fmt.Println("Server closed connection")
+ return
+ }
+ if err != nil {
+ fmt.Println("Error reading data:", err)
+ return
+ }
+ fmt.Println("Read", len(buf), "bytes:", "Hello, Server! I have received your message: "+string(buf[:n])+"\n")
+}
diff --git a/day09/upd/server/README.md b/day09/upd/server/README.md
new file mode 100644
index 0000000..56d4a3c
--- /dev/null
+++ b/day09/upd/server/README.md
@@ -0,0 +1,2 @@
+# 服务端
+
diff --git a/day09/upd/server/main.go b/day09/upd/server/main.go
new file mode 100644
index 0000000..a1406f8
--- /dev/null
+++ b/day09/upd/server/main.go
@@ -0,0 +1,40 @@
+package main
+
+import (
+ "fmt"
+ "log"
+ "net"
+)
+
+func main() {
+ // 监听 UDP 9999,可接收任意客户端数据报
+ pc, err := net.ListenPacket("udp", ":9999")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer pc.Close()
+ fmt.Println("Server is listening on port 9999")
+
+ // 循环读取数据
+ for {
+ // 准备一个buf来读取包的内容
+ buf := make([]byte, 1024)
+ n, addr, err := pc.ReadFrom(buf)
+ // 如果读取失败,则继续下一次循环
+ if err != nil {
+ fmt.Println("Error reading data:", err)
+ continue
+ }
+ // 业务处理: 打印读取到的数据
+ fmt.Println("Read", n, "bytes from", addr)
+ fmt.Println("Data:", string(buf[:n])+"\n")
+
+ // 写入数据(回复客户端, 回一个包)
+ _, err = pc.WriteTo([]byte("Hello, Client! I have received your message: "+string(buf[:n])+"\n"), addr)
+ if err != nil {
+ fmt.Println("Error writing data:", err)
+ continue
+ }
+ fmt.Println("Written", len(buf), "bytes to", addr)
+ }
+}