c 语言 网络唤醒,Java网络编程————UDP实现ThinkPad S5网络唤醒-Go语言中文社区...
功能要求:通过Java程序实现ThinkPad S5 笔记本网络唤醒
必备知识:
一、定义:网络唤醒,通过局域网、互联网或通讯网络,以有线网卡的形式,向目标电脑发送魔法包(Magic Packet),让电脑自动开机。该技术目前被大多数主板和网卡所支持。
二、远程唤醒必备条件: 远程唤醒只能依赖于主机硬件实现。
1.主板支持,能够在关机时为网卡供电,2002年以后的大部分主板都支持该功能。
2.主板设置:各种类型电脑有所区别,但基本上都是在BIOS中设置Power Management Setup,中Wake Up On Lan为Enable,各个机型意思大同小异。
3.网卡设置:打开网卡的远程唤醒功能步骤如下:我的电脑—>管理—>设备管理器—>网络适配器—>以太网卡—>属性—>高级—>“魔术封包唤醒”—>开启(Enable),—>电源管理—>一直勾选到"只允许幻数据包唤醒计算机"—>确定。完成!
4.远程唤醒目标主机必须连接电源。笔记本必须插继电器。
5.目标主机上一次必须正常关机。
6.发送开机命令的主机必须能够与目标主机建立通讯:如果发送广播魔术包,那么只要保证广播包能够到达目标主机即可;如果发送的是定向包则需要局域网路由器的支持,需要在路由其中配置一个到目标主机的路由信息。
三、魔术包的组成
魔术包的组成非常固定,由6对“FF”组成前缀,其余为重复16次的MAC地址组成。例如:试验机的MAC为:“28-D2-44-35-68-A7”,那么魔术包为:
“0xFFFFFFFFFFFF28D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A7”
windows系统中通过cmd中ipconfig -all来查看Mac地址,注意,是以太网卡,这里的网卡名称与上面网卡设置中的网卡名称是一致的。
Java代码:
/**
* 通过指定目标主机Mac唤醒网卡所属主机
*
* @author mht
* @param objectMac
* @since 2018.2.7 西安浮雕墙项目亲测:)
*/
public static void wakeYourPC(char[] objectMac) {
char[] head = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };
char[] cmd = new char[102];
// 拼接数据包
System.arraycopy(head, 0, cmd, 0, head.length);
// 需要16遍重复目标mac
for (int i = 0; i < 16; i++) {
System.arraycopy(objectMac, 0, cmd, 6 + i * 6, head.length);
}
final String cmdStr = new String(cmd);
try {
byte[] data = cmdStr.getBytes("ISO-8859-1");
/* 在Java UDP中单播与广播的代码是相同的,要实现具有广播功能的程序只需要使用广播地址即可 */
InetAddress inetAddr = InetAddress.getByName("255.255.255.255");
int port = 7010;
// 获取广播socket
// MulticastSocket client = new MulticastSocket(port);
DatagramSocket client = new DatagramSocket();
// 封装数据包
DatagramPacket packet = new DatagramPacket(data, data.length, inetAddr, port);
// 发送魔法包
for (int i = 0; i < 3; i++) {
client.send(packet);
Thread.sleep(100);
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
OK,大功告成!
参考教程:
《如何开启网卡的网络唤醒功能》来自联想知识库:点击打开链接
《使用Java Socket发送魔术包:实现电脑远程开机(WOL)》:点击打开链接
==================2018/3/1 更新================================================
除了上述被唤醒电脑的常规配置,主板以及网卡,有时候还是不能唤醒目标主机,咨询了一下英特尔产品支持,了解到一个重要的细节:勾选掉“启用快速启动”。
如图:
这是在win10和win8系统中存在的选项,在win7系统中并未找到此项。当勾选掉这一项后,再使用网络唤醒就可以成功了。
原因是,这一项勾选的话可能会导致部分机器在正常关机之后并不是出于shutdown的状态下,而是出于某种不会接收魔术包唤醒的“休眠”态。
c 语言 网络唤醒,Java网络编程————UDP实现ThinkPad S5网络唤醒-Go语言中文社区...相关推荐
- Java网络编程————UDP实现ThinkPad S5网络唤醒
功能要求:通过Java程序实现ThinkPad S5 笔记本网络唤醒 必备知识: 一.定义:网络唤醒,通过局域网.互联网或通讯网络,以有线网卡的形式,向目标电脑发送魔法包(Magic Packet), ...
- Java网络编程UDP编程
一. 简单先介绍一下网络编程 1. 概念 : 通过网络IP连接起来,实现网络通信,数据传输的操作,就是网络编程 2. 实现 : 目前来说当前主要有两种实现的方法,TCP和UDP: 其中TCP需要划分客 ...
- Java网络编程——UDP
网络编程,UDP编程 网络编程 网络编程三要素 IP ipv4 ipv6 Java获取IP 端口 端口号 协议 UDP协议 TCP协议 UDP通信程序 发送步骤 接收步骤 单播 组播 广播 网络编程 ...
- 关于JAVA网络编程UDP和TCP(上)
对于JAVA的网络编程我们又称之为socket编程.首先,网络编程,顾名思义,要涉及到网络,其中网络协议是必不可少的对于我们而言,一个重要的网络协议是大家要会的:TCP/IP协议,udp协议. 一.网 ...
- java网络编程 UDP通信协议实现局域网内文件的发送和接收
要实现两台内网下的机子进行通信,首先得知道接收方的内网IP,获取IP的方式:可以打开任务管理器的以太网进行查看: 如下 也可以通过 win+r 输入cmd ,然后输入 ipconfig 回车 进行 ...
- java 网络编程 UDP TCP
网络编程 网络编程主要用于解决计算机与计算机(手机.平板..)之间的数据传输问题. 网络编程: 不需要基于html页面就可以达到数据之间的传输. 比如: feiQ , QQ , 微信.... 网页编程 ...
- JAVA网络编程 -UDP篇(简单实现网络聊天)
通过UDP实现网络聊天 多线程实现UDP网络聊天 1. 编写UDP发送线程UdpSendThread import java.io.BufferedReader; import java.io.IOE ...
- Java网络编程UDP协议--模拟英雄联盟游戏聊天骂人变*--优化网络环境从你我做起
模拟英雄联盟聊天功能:实现客户端与服务器(一对一)的聊天功能,客户端首先发起聊天,输入的内容在服务器端和客户端显示,然后服务器端也可以输入信息,同样信息在客户端和服务端显示. 本案使用了正则表达式将接 ...
- [Java网络编程]UDP通信程序练习
代码如下: package UdpPracticePack;import java.io.BufferedReader; import java.io.IOException; import java ...
最新文章
- 区块链简史:解读这场技术革命的前世今生
- 几个进程管理的命令:pkill,pidof,kill,killall,job
- JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 | 必须收藏!
- Axure 部件的交互样式
- Linux 内核开发 - Eclipse内核开发环境搭建
- Failed to bind NettyServer on /192.168.**.*:20880, cause: Failed to bind to: /0.0.0.0:20880
- Redis高可用方案-哨兵模式-SpringBoot整合
- PHP 获取页面地址参数详解整理
- 杭电4554 叛逆的小明
- 学python数据分析心得体会800字_学习 Python 数据分析的正确姿势
- matlab菲涅尔衍射光强分布,矩孔菲涅耳衍射的光强分布.pdf
- MySQL重复数据排序_排序数据以在MySQL中重复记录
- P5200 Sleepy Cow Sorting(树状数组,模拟)
- VUE解决路由里的参数改变页面却没有跳转的问题
- ps4实况2016服务器维护,实况足球2016 PS4联机延时的解决办法
- 语音合成——闽南语合成(1)
- 知识付费对接微信公众号订阅消息
- Python实战:淘宝自动抢购
- svn没有绿色的对勾处理
- 关于“联想”笔记本“无线网功能关闭”的问题的解决方案