网络唤醒工具WOL(适用于华为路由器下的设备)

文章介绍了如何使用Node.js和Kotlin发送Wake-on-LAN信号来唤醒网络中的设备,需要知道目标设备的MAC地址和路由器LAN口的IP地址。提供了Node.js和Kotlin的示例代码,强调了IP地址的特定格式,并指出此方法可能适用于PC和安卓设备。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用前需要先知道被唤醒设备的mac地址和路由器的lan口ip地址,

代码中配的是唤醒这台设备

image.png

然后把'192.168.8.255'和'F4:9F:F3:91:0D:5A'修改成自己当前环境的.

ip地址的前3位为自己路由器lan口的前3位,第四位改成255,比如华为路由器lan口的默认ip是192.168.3.1改成192.168.3.255即可

node.js版本

const dgram = require('node:dgram');
const client = dgram.createSocket('udp4');

console.log(process.argv);
const ip = process.argv[2] || '192.168.8.255';
const mac = process.argv[3] || '8C:DC:D4:55:D0:15';
const port = 9;

console.log(`ip: ${ip}`);
console.log(`mac: ${mac}`);

const macBytes = mac.split(':').map(v => Number.parseInt(v, 16) << 24 >> 24);
let data = new Array(6).fill(-1);
for (let index = 0; index < 16; index++) {
    data = data.concat(macBytes);
}
client.send(new Uint8Array(data), port, ip, (e, r) => {
    console.log(`sendCallBack: ${e || r}`);
    client.close();
});

kotlin版本

package com.yzh.test

import java.net.DatagramPacket
import java.net.DatagramSocket
import java.net.InetSocketAddress

/**
 * 作者:yzh
 *
 * 创建时间:2023/2/5 09:40
 *
 * 描述:
 *
 * 修订历史:
 */
object WolUtils {
    @JvmStatic
    fun main(args: Array<String>) {
        wakeOnLan("192.168.8.255", "8C:DC:D4:55:D0:15")
    }

    private fun wakeOnLan(ipStr: String, macStr: String) {
        val macBytes = macStr.replace("-", ":").split(":").map { it.toInt(16).toByte() }
        println(macBytes)
        val data = ByteArray(6 * 17) { if (it < 6) -1 else macBytes[it % 6] }
        DatagramSocket().run {
            send(DatagramPacket(data, data.size, InetSocketAddress(ipStr, 9)))
            close()
        }
    }
}

其他路由器下的设备未测试过.功能和这个相同,适用于pc和安卓

e8b248a9b584464e0e6aa2f0130cd9d.jpg

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值