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

2023-02-04  本文已影响0人  今天i你好吗

使用前需要先知道被唤醒设备的mac地址和路由器的lan口地址,
代码中配的是唤醒这台设备


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] || 'F4:9F:F3:91:0D:5A';
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", "F4:9F:F3:91:0D:5A")
    }

    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和安卓


image.png
上一篇 下一篇

猜你喜欢

热点阅读