DIY一个网络唤醒小工具

By sunbeam at 2022-01-06 • 0人收藏 • 460人看过
import win.ui;
/*DSG{{*/
mainForm = win.form(text="WakeOnLan";right=599;bottom=399)
mainForm.add(
button={cls="button";text="唤醒";left=334;top=48;right=435;bottom=78;z=1};
edit={cls="edit";text="2C:56:DC:DB:71:65";left=93;top=48;right=309;bottom=78;edge=1;z=2};
static={cls="static";text="MAC地址";left=34;top=52;right=86;bottom=73;transparent=1;z=3};
static2={cls="static";left=33;top=90;right=487;bottom=114;transparent=1;z=4}
)
/*}}*/

import  console
import wsock.udp.client;
WakeUpMac = {0x2C,0x56,0xDC,0xDB,0x71,0x65};//要唤醒的电脑MAC地址,测试用

WakeHost = function(mac){
	
	var txdata = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
	for(i=1;16;1){
		table.append(txdata,mac);
	}
	var buf = raw.buffer(#txdata,0);
	for(i=1;#txdata;1){
		buf[i] = txdata[i];
	}
	var udpClient = wsock.udp.client();
    udpClient.setBroadcast(true);
    udpClient.sendto(buf,"255.255.255.255",9); 
}


mainForm.button.oncommand = function(id,event){
	//WakeHost(WakeUpMac);//测试用
	var macstr = mainForm.edit.text;
	if(string.cmpMatch(macstr,"\x\x[-\:]\x\x[-\:]\x\x[-\:]\x\x[-\:]\x\x[-\:]\x\x" )){
		var macarr = string.split(macstr,'-:');
		for(i=1;#macarr;1){
			macarr[i] = tonumber(macarr[i],16);
		}
		WakeHost(macarr);
		mainForm.static2.text = macstr ++ "正在唤醒"
	}
	else {
		//MAC字符串错误
		mainForm.static2.text = "MAC地址错误"
	}
	
}

mainForm.show();
return win.loopMessage();


最近需要搞网络唤醒,没找到合适的工具,就打算自己动手做一个,下午搞了个demo,实测可以唤醒主机了

看论坛里没有,跟大家分享一下


3 个回复 | 最后更新于 2022-01-07
2022-01-06   #1

谢谢分享, 学习了.

网络唤醒的原理是啥? 是发送任意字符到要唤醒的设备就可以了吗?

2022-01-07   #2

回复#2 @jacen :

感谢大佬帮忙优化,看起来简洁多了

2022-01-07   #3

回复#1 @admin :

原理就是通过UDP广播发送6个0xFF,然后连续发16次相应的MAC地址就可以了,对应的网卡自己会解析唤醒的

登录后方可回帖

登 录
信息栏
公告:
私人站, 专注分享, 可在分享中适当提问, 但谢绝纯提问, 否则不再提醒一律删帖, 谢谢合作!



本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
Loading...