package main import ( "fmt" "net" "net/http" ) func sendMagicPacket(macAddr string, broadcastAddr string) error { // 解析 MAC 地址 mac, err := net.ParseMAC(macAddr) if err != nil { return err } // 构造 Magic Packet 数据 payload := make([]byte, 6+len(mac)*16) copy(payload, []byte{0xff, 0xff, 0xff, 0xff, 0xff, 0xff}) for i := 6; i < len(payload); i += len(mac) { copy(payload[i:], mac) } // 创建 UDP 连接 conn, err := net.DialUDP("udp", nil, &net.UDPAddr{IP: net.ParseIP(broadcastAddr), Port: 9}) if err != nil { return err } defer conn.Close() // 发送 Magic Packet _, err = conn.Write(payload) return err } func ewake_zh() { macAddress := "E8:9C:25:75:04:21" // 替换为目标设备的 MAC 地址 broadcastAddress := "255.255.255.255" // 广播地址 err := sendMagicPacket(macAddress, broadcastAddress) if err != nil { panic(err) } } func handler(w http.ResponseWriter, r *http.Request) { // switch r.URL.Path { case "/": //fmt.Fprintf(w, "Welcome to the home page!") fmt.Fprintf(w, "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head><a href='/ewake_zh'>ewake_zh</a>") // 将 "Hello, World!" 发送给客户端 case "/ewake_zh": ewake_zh() fmt.Fprintf(w, "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head><p>ewake_zh</p><a href='/'>home</a>") default: //http.NotFound(w, r) // fmt.Fprintf(w, "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"></head><a href='/'>home</a>") } } func main() { http.HandleFunc("/", handler) // 设置路由,当访问根路径时调用 handler 函数 fmt.Println("Server listening on port 8080...") err := http.ListenAndServe(":8080", nil) // 启动 HTTP 服务器并监听端口 if err != nil { fmt.Println("Error:", err) } }