soft

soft

HTTP 远程唤醒WIN10

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

}


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

联系我 331434376    15629529961