DIY一个网络唤醒小工具

By sunbeam at 2022-01-06 • 1人收藏 • 1182人看过
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地址就可以了,对应的网卡自己会解析唤醒的

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...