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)
}
}