实现逻辑

就是通过UDP向广播地址255.255.255.255:9发送一个称为“魔术包”的数据包。被唤醒主机关机之后需要和程序所在主机通过网线连接,才能收到这个数据包。被唤醒主机收到之后就会开机。

配置需要被唤醒的主机

我的台式主机试DELL的,dell官网有相关的配置方法,其他的可能有区别需要查询
我的主机配置方法

实施唤醒操作的程序

要注意的是:程序所在的主机,要确保一定有一次的数据包是通过那个有限网卡发出去的,可以在程序中指定从哪个网卡发出,或者控制主机的无线网络,或者每个网卡都发一次
指定网卡发送UDP数据包


var help = `
环境说明:1. 被唤醒主机要支持Wake on Lan功能且已开启该功能2. 被唤醒主机在关机时应该是有线连接3. 请确保该程序与被唤醒主机在同一局域网中
参数说明:-mac 被唤醒主机的MAC地址 (必须输入)-nic 指定网卡发送唤醒魔包
使用说明:wol -mac 11:22:33:44:55:66 -nic eno1
注意事项:1. 路由器设备或有些主机有多张网卡, 如果不指定网卡唤醒魔包可能到达不了被唤醒主机2. MAC地址的格式可以是以下几种形式11:22:33:44:55:66 或11-22-33-44-55-66 或11:22-33:44:55-66 或112233445566
`
func main() {err := wakeNew()fmt.Println("wakeNew  err = ", err)
}func wakeNew() error {macAddr := flag.String("mac", "xx:xx:xx:xx:xx:xx", help)//被唤醒主机的MAC地址,这里通过一条网线连接的,可以在网络适配器看见整个以太网地址nic := flag.String("nic", "以太网 2", help)flag.Parse()if len(*macAddr) == 0 {return errors.New(fmt.Sprintf("%s\n", help))}hw := strings.Replace(strings.Replace(*macAddr, ":", "", -1), "-", "", -1)if len(hw) != 12 {return errors.New(fmt.Sprintf("MAC: [%s] 输入不正确.\n", *macAddr))}macBytes, err := hex.DecodeString(hw)if err != nil {fmt.Println("DecodeString  err = ", err)return err}// 构造 Magic Packet 数据包var magicPacket bytes.Bufferfor i := 0; i < 6; i++ {err := magicPacket.WriteByte(0xff)if err != nil {fmt.Println("WriteByte  err = ", err)}}for i := 0; i < 16; i++ {_, err = magicPacket.Write(macBytes)if err != nil {fmt.Println("magicPacket Write  err = ", err)}}sender := net.UDPAddr{}if len(*nic) != 0 {ip, err := interfaceIPv4ByName(*nic)if err != nil {err = errors.New(fmt.Sprintf("网卡[%s]错误: %s", *nic, err))return err}sender.IP = ip}// 发送 Magic Packettarget , err := net.ResolveUDPAddr("udp", "255.255.255.255:9")if err != nil {fmt.Println("ResolveUDPAddr err = ", err)return err}//也可以这样写
//  target := net.UDPAddr{//      IP:   net.IPv4bcast,
//      Port: 9,
//  }conn, err := net.DialUDP("udp", &sender, &target)if err != nil {fmt.Println("DialUDP err = ", err)return err}_, err = conn.Write(magicPacket.Bytes())if err != nil {fmt.Println("conn.Write err = ", err)return err}fmt.Println("Wake-on-LAN packet sent!")return nil
}

golang---实现wake on lan相关推荐

  1. 在Linux下通过Wake On LAN实现网络唤醒远程开机

    我们经常有这样的场景或需求,人在外面,需要将家里的机器或公司的机器开启,进行远程控制操作. 有几种方式可以实现远程开机,一是通过主板的来电自启动,通过智能开关远程开机.还有一种方式就是可以通过一台已经 ...

  2. 主板开启网络唤醒(Wake on lan)

    记录几个主板开启网络唤醒的链接: 华硕主板实现Wake on lan 网络唤醒的种种细节: https://blog.csdn.net/weixin_44607961/article/details/ ...

  3. 总结几点 Wake On Lan (WOL) 失败的原因

    正文 在我想使用 Wake On Lan(后文皆用 WOL 代替)这项技术远程开机时,总是失败,在查阅各种资料后成功使用上了 WOL,下面总结几点导致失败的原因. 1,发送 Magic Packet( ...

  4. 无线wifi如何远程唤醒?wake on lan网络唤醒及远程控制踩过的坑!

    相信好多人都有远程唤醒自家电脑的这个需求,我也因各种原因折腾了好久-直到现在,也算是没那么折腾了,在这里不说配置细节,只说说远程开机唤醒的特定要求.遇到问题.解决方案,让能有幸看到人同学少走点弯路! ...

  5. 使用Wake On Lan远程唤醒

    使用Wake On Lan远程唤醒 客厅里的那台htpc,在无下片任务的时候,大部分时间里都在白白浪费电.主板是支持wake on lan的,把它弄成可以远程控制会比较经济. 首先要设置bios,将电 ...

  6. 基于OpenWrt的Wol(wake on lan)远程唤醒

    原理:向支持唤醒的网卡,发送特定格式的数据帧,从而启动计算机.正想起名字Wol,wake on lan 一样,是通过lan口发送的数据.所以设备要通过网线和路由器相连. 功能比较好实现,只有两个点: ...

  7. 设置网络唤醒电脑(WAKE ON LAN,WOL)

    网络唤醒,就是通过有线网卡的形式,向电脑发送魔术包(Magic Packet),让电脑自动开机. 在支持ErP省电技术的主板下,必须要关闭ErP选项. 进入bios中设置,让主板支持通过(由PCI-E ...

  8. wake on lan 远程唤醒/远程开机中的所有设置细节(arp静态绑定解决长时间关机无法唤醒)

    远程开机这个功能实在屌爆了,工作中会经常遇到需要远程开机的情景,比如说,晚上在家里,突然接到领导的电话需要改东西,然而家里的电脑又没有工作环境,各种工具软件都没有安装,这时如果往公司跑一趟真是麻烦,或 ...

  9. WOL wake on lan 功能 nodejs android kotlin实现

    有些机器支持WOL功能,可以远程唤醒机器, 几乎所有品牌的硬件都支持WOL,由于安全原因,可能在软件上默认WOL处于关闭状态 原理 WOL(Wake on Lan),即局域网唤醒,从根本上来说是硬件设 ...

  10. NAS折腾笔记之Wake On LAN和远程管理

    最近对华硕的印象很差,几年前组的台式机,为了带大显卡和多显卡,买了全尺寸的大板z170 pro gamming.结果这板子没发挥啥作业就吃灰了.最近把他翻出了玩truenas,结果wake on la ...

最新文章

  1. shell脚本判断输入参数个数
  2. log4j2配置文件的故事
  3. MapReduce论文中文版
  4. [转]将Ubuntu默认的邮件客户端Evolution替换为Thunderbird
  5. Boost:使用Qt加载图像,应用简单的框模糊滤镜
  6. 函数使用了堆栈的字节超过_在C语言中如何访问堆栈?
  7. 智表ZCELL产品V1.4.0开发API接口文档 与 产品功能清单
  8. 如何搭建数据标准管理平台
  9. 操作系统(一)—— 操作系统概论
  10. 将EXCEL自定义时间格式转换为时间格式
  11. 企业微信获取用户php,微信企业号获取用户授权登陆信息
  12. matlab小波变换、离散小波变换函数使用
  13. java 拼多多电子面单打印_商家自定义模板
  14. Halcon视觉检测——使用分类器分类
  15. 学习java怎么样?后期能挣钱吗?
  16. 开发常用镜像站 - 阿里云镜像站
  17. 2021软件工程保研经历
  18. win7家庭版怎么把计算机显示桌面,Win7怎样显示桌面
  19. js屏蔽鼠标左右键和键盘按键功能
  20. Windows系统提示应用程序无法正常启动(0xc0000142)解决方法

热门文章

  1. 微星主板在停过电后无法被远程开机
  2. “连邦十年(1994——2004)用户心中十大最具影响力国产软件评选”揭晓
  3. 墨菲定律、二八法则、马太效应、彼得原理、酒与污水定律、水桶定律、蘑菇管理原理等13条是左右人生的金科玉律。...
  4. 怒江水电开发的争议与对工程实践的认识
  5. Java封装redis工具类RedisUtils,以及在@Postconstruct注解中调用redis可能出现redisTemplate空指针异常
  6. 以智慧城市为标杆打造立体防控,咫尺之间华丽转身
  7. 详解设计模式:中介者模式
  8. AAA企业信用评级的好处
  9. 初一下册计算机教案,七年级下册信息技术教案
  10. 全国顶尖网安创业20强诞生 锘崴科技实力上榜