Skip to content

Commit d9a97ef

Browse files
committed
feat: can finder mvp
1 parent 93d09ec commit d9a97ef

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module can-finder
2+
3+
go 1.24.1

main.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package main
2+
3+
import (
4+
"encoding/json"
5+
"log"
6+
"net"
7+
)
8+
9+
// DeviceInfo 接收到的设备信息结构体
10+
type DeviceInfo struct {
11+
Name string `json:"name"`
12+
IP string `json:"ip"`
13+
MAC string `json:"mac"`
14+
Model string `json:"model"`
15+
Version string `json:"version"`
16+
}
17+
18+
func main() {
19+
addr := net.UDPAddr{
20+
Port: 9999,
21+
IP: net.ParseIP("0.0.0.0"),
22+
}
23+
24+
conn, err := net.ListenUDP("udp4", &addr)
25+
if err != nil {
26+
log.Fatalf("监听UDP失败: %v", err)
27+
}
28+
defer conn.Close()
29+
30+
buf := make([]byte, 1024)
31+
32+
log.Println("开始监听设备广播...")
33+
34+
for {
35+
n, remoteAddr, err := conn.ReadFromUDP(buf)
36+
if err != nil {
37+
log.Printf("接收失败: %v", err)
38+
continue
39+
}
40+
41+
var device DeviceInfo
42+
if err := json.Unmarshal(buf[:n], &device); err != nil {
43+
log.Printf("JSON解析失败: %v", err)
44+
continue
45+
}
46+
47+
log.Printf("发现设备 %s (%s) 来自 %s, 型号: %s, 版本: %s",
48+
device.Name, device.IP, remoteAddr.IP, device.Model, device.Version)
49+
}
50+
}
51+

0 commit comments

Comments
 (0)