Java实现远程开关机(网络唤醒)

Java实现远程开关机(网络唤醒)Java实现远程开关机是做的一个在局域网下实现一台机器对多台机器的开关机控制远程唤醒实现是通过电源的一种协议进行控制的,需要知道被唤醒机器的mac地址首先要须知:网络唤醒条件网络唤醒需要终端的主板和网卡支持,需要先在BIOS设置支持网络唤醒网络唤醒要接通电源保证网卡能通电要接网线不能是wifi如果强制关机可能不能通过网络唤醒来开机跨交换机或者跨路由的话就有可能不支持唤醒跨多…

大家好,又见面了,我是你们的朋友全栈君。

Java实现远程开关机是做的一个在局域网下实现一台机器对多台机器的开关机控制
远程唤醒实现
是通过电源的一种协议进行控制的,需要知道被唤醒机器的mac地址

首先要须知:
网络唤醒条件
网络唤醒需要终端的主板和网卡支持,需要先在BIOS设置支持网络唤醒
网络唤醒要接通电源保证网卡能通电 要接网线 不能是wifi
如果强制关机 可能不能通过网络唤醒来开机
跨交换机或者跨路由的话就有可能不支持唤醒
跨多层交换机的话即使ping通也未必能唤醒
在同一网段下进行网络唤醒最为省事

下面对被唤醒机器惊醒配置(要不就乱套啦,在公司想开谁的机器都可以啦)
1、先进入BIOS中开启网络唤醒功能,在BIOS中找到“OnBoard LAN”选项,将它设成“Enabled”。同时将“POWER MANAGEMENT SETUP(电源管理设置)”下的“Power On by LAN/Ring”选项设为“Enabled”,最后将“Wake On LAN(网络唤醒)”选项设置为“Enabled”,设置好后保存退出。

2、右击“我的电脑”并选择“管理”选项,在随后出现的“计算机管理”窗口中找到“设备管理”,在设备列表中找到“网络适配器”下的本地网卡(注意是有线网卡),右击本地网卡并选择“属性”,在弹出的对话框中选择“高级”页签,选择“Wake on Magic Package”或“网络唤醒”选项并将其值设置为“开启”,在同一个窗口中选择“电源管理”页签,在“允许设备唤醒计算机”以及“只允许幻数据包唤醒计算机”选项前打钩,点击【确定】按钮;
在这里插入图片描述
在这里插入图片描述
上面就是配置啦!!!

下面上代码

String mac = "" //mac地址
try { 

int port = 7;
byte[] macByte = new byte[6];
String[] ips = mac.split("\\:|\\-");
for (int i = 0; i < 6; i++) { 

macByte[i] = (byte) Integer.parseInt(ips[i], 16);
}
// 用来存储网络唤醒数据包
byte[] bys = new byte[6 + 16 * macByte.length];
for (int i = 0; i < 6; i++) { 

bys[i] = (byte) 0xff;
}
for (int i = 6; i < bys.length; i += macByte.length) { 

System.arraycopy(macByte, 0, bys, i, macByte.length);
}
// 将字符形式的IP地址转换成标准的IP地址
// InetAddress address = InetAddress.getByName(ip);
InetAddress address = InetAddress.getByName("255.255.255.255");
// 生成标准的数据报
DatagramPacket pack = new DatagramPacket(bys, bys.length, address, port);
// 创建标准套接字,用来发送数据报
DatagramSocket socket = new DatagramSocket();
// 发送魔法包
socket.send(pack);
socket.close();
} catch (Exception e) { 

e.printStackTrace();
} catch (Throwable e) { 

e.printStackTrace();
}

唤醒到此结束…
补充:远程唤醒的机器如果有密码,还需要输入密码,如果每台我们都输入密码的话 我们还不低自己开机那,所以可以设置默认密码,电脑每次开机都不需要输入。这个可以在网上查一下,挺多的。

远程关机
远程关机也需要一些配置,要不更加乱套。
1、在要重新启动或远程关机的计算机上,按Windows键+ R,键入:regedit,然后按键盘上的Enter。
找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

在这里插入图片描述
2、右击system 选择新建 DWORD(32位)值
在这里插入图片描述

3、输入以下标签:LocalAccountTokenFilterPolicy
在这里插入图片描述
4、双击该值,然后将该值更改为1。
在这里插入图片描述
退出注册表,然后重新启动计算机以确认更改

还有远程关机必须要设置密码!!!(重点)
下面上代码

String ip = "";   //ip
String user = "";   //被关机器用户名
String passwd = "";   //被关机器密码
try { 

Runtime.getRuntime().exec("net use * /del /y");
Process process = Runtime.getRuntime().exec("net use \\\\"+ip+"\\ipc$ \""+passwd+"\" /user:\""+user+"\"");
int i = process.waitFor();//等待命令执行完
if (i == 0){ 

Runtime.getRuntime().exec("shutdown -s -t 0 -m \\\\"+ip+" -c \"test\" -f");
}
} catch (Exception e) { 

e.printStackTrace();
}

关机结束…
补充:关机这一块主要是用cmd里的命令惊醒关机,前提要保持可以ping通
说一下命令的意思:

net use * /del /y   

清除所有已连接的通道,每次操作时要执行一下,不然可能会提示通道已占用的错误

net use \\ip\ipc$ "密码" /user:"用户名"

打开通道

shutdown -s -t 0 -m \\192.168.20.200 -c "test" -f

关机命令
可以用这三个命令在cmd中试一下

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137180.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 下载安装 Python ,含详细步骤[通俗易懂]

    下载安装 Python ,含详细步骤[通俗易懂]1、到官网下载python安装包官网地址:https://www.python.org/downloads/点击“Windows”点击“DownloadWindowsinstaller

  • Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制CortexM3 NVIC与中断控制宗旨:技术的学习是有限的,分享的精神的无限的。一、NVIC概览——嵌套中断向量表控制器    NVIC的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC还包含了MPU、SysTick定时器以及调试控制相关的寄存器。NVIC共支持1至240个外部中断输入(通常外

  • linux清屏命令[通俗易懂]

    1)clear这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。一般都会用这个命令。(2)reset这个命令将完全刷新终端屏幕,之前的终端输入操作信息将都会被清空,这样虽然比较清爽,但整个命令过程速度有点慢,使用较少。(3)另外介绍一个用别名来使用清屏命令的方法,如下:[root@localhost~]$aliascls=‘clea…

  • CultureInfo 類別

    CultureInfo 類別CultureInfo類別.NETFramework2.0其他版本.NETFramework4.5.NETFramework4.NETFramework3.5Silverlight5人當中有2人評分為有幫助-為這個主題評分提供特定文化特性(Culture)的相關資訊,如文化特性名稱、書寫系…

  • teleport怎么用_telelist怎么用

    teleport怎么用_telelist怎么用teleport使用说明浏览器下载网页:只能浏览主页和少数网页,其它不能浏览,容量几百kbteleport下载项目一能完全离线看网页,7328多文件9个JPG文件,大小134Mteleport下载项目二部分网页采集内容和项目一基本一致,但大几兆部分网页需要项目二(复制站点)才能浏览,项目一看不到图片项目二比项目一耗时多,但要全面视频教程https…

  • MultiSet_multilayered

    MultiSet_multilayeredGuava引进了JDK里没有的,但是非常有用的一些新的集合类型。所有这些新集合类型都能和JDK里的集合平滑集成。Guava集合非常精准地实现了JDK定义的接口。Guava中定义的新集合有:Multi

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号