移动端控制电脑开关机(测试通过)

简介:

近日网络上技术总监和产品总监因为要实现根据手机壳颜色更换主题的开发需求互殴事件发生后,本人战战兢兢的工作,生怕得罪产品给我穿小鞋,今天给我一个任务,看完之后发现还好,不算难,在我能力范围之内。任务:实现移动端远程控制电脑开关机。欣喜之下,做完测试,特此发博,话不多说,给重点。

电脑开机:

即网络唤醒,就是通过有线网卡的形式,向电脑发送魔术包(Magic Packet),让电脑自动开机。当然这里有一个前提:必须主板和网卡都支持才行(当然这都不是事,只要不是很旧的基本都支持)。

准备工作:

1、设置bios,开启网络唤醒。

2、系统电源管理设置中,务必勾选,允许此设备唤醒计算机(为了更安全可以勾选,只允许幻数据包唤醒此计算机)

原理:

移动端发送指令推送redis(为了实现云端和本地局域网互通),路由器(这里我自己写了一个本地服务器,即作为局域网服务器使用)定时请求接收redis指令,路由器(局域网服务器)收到指令后解析指令内容,然后UDP发BroadCast广播数据包给主机的子网,收到数据包,就可以开机了。包的内容为:6个“FF"+16个目标主机网卡地址。(是不是超级简单)

注:因为是移动端代码我就不贴了,很简单,就是发送命令,推送redis,只分享局域网服务器发送数据包的代码。

电脑关机:

关机的话就更简单了,利用shutdown命令允许向远程计算机发送关机指令,当然需要远程计算机端授权允许才行,如何授权?可以在组策略里找到相关选项。其实就是用cmd,发送关机指令,电脑自然关机成功,没什么可多说的,这个相信很多不写程序的都知道,并且用过,直接贴代码了。

原理:

移动端发送指令推送redis,局域网服务器定时请求接收redis指令,收到指令后解析指令内容,然后使用ZMQ通过IP给机器发送shutdown命令,实现关机。

使用:直接调用此方法,传入cmd指令 shutdown -f -s -t 00 (这里我使用强杀,win7、win10都可以强制关机)

 

结语:

移动端远程控制电脑开关机至此完成。