网络唤醒的原理:通过有线网卡执行开机操作,需要主板和网卡全都支持网络唤醒功能,
注意,只有插网线的网卡才支持网络唤醒,wifi是无法远程开机的,
被唤醒的计算机需要在同一局域网中,通过UDP广播的方式发送魔法包;
蓝屏或死机属于非正常关机状态,不支持远程开机;
在设备管理器中找到 网卡设备,右键选择「属性」,然后在「电源管理」里面开启「允许此设备唤醒计算机」,然后在「高级」一栏里找到「关机网络唤醒」、「魔术封包唤醒」里设置成「开启」
取消快速启动的选项
代码参考:
package cn.itsub.proxy.client.work;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 网络唤醒
*/
public class WakeOnLan {
public static void main(String[] args) {
String mac = "30-5A-3A-05-C6-FA"; //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();
//System.out.println("代码执行完成");
} catch (Exception e) {
e.printStackTrace();
} catch (Throwable e) {
e.printStackTrace();
}
}
}
网络唤醒(Wake On Lan)是一种计算机局域网唤醒技术,使局域网内处于关机或休眠状态的计算机,将状态转换成引导(Boot Loader)或运行状态.。用通俗的语言解释,就是你的电脑通电着但没开机,可以用其他电脑通过网络来唤醒(开机)你的电脑,以此实现【远程开关机】的操作。文章来源:https://www.toymoban.com/news/detail-498698.html
目前的电脑硬件【主板】都自带有集成网卡,大多数集成网卡都能实现网络唤醒功能,除了【集成网卡】这个硬件条件,还需要到电脑的【BIOS】以及Windows系统中进行一些设置,即可实现远程开、关电脑的需求。文章来源地址https://www.toymoban.com/news/detail-498698.html
前提条件
- 主板支持(现在的主板基本都支持,所以基本不用担心),很旧的主板好像是2000年左右的,还是需要插网卡(PCI2.1标准)需要3针WOL线连接主板;
- 关机时候为主板通电(600mA以上电流),把电源切断是不行的,网卡带电才可以;
- 非正常关机可能会唤醒失败,所以里如果断电导致关机的话可能需要手工开启机器;
- 被唤醒的电脑必须连接网络,或者路由器,并且有一台手机或者电脑可以发送唤醒包;
到了这里,关于java实现电脑远程开机(网络唤醒)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!