0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Autojs如何實(shí)現(xiàn)WakeUpOnline遠(yuǎn)程開(kāi)機(jī)

汽車(chē)電子技術(shù) ? 來(lái)源:安卓腳本 ? 作者:Mr.Yu ? 2023-03-03 13:41 ? 次閱讀

就是字面意思, 比如人在外面玩, 只需要手機(jī)一點(diǎn),即可將家里的電腦打開(kāi).這個(gè)東西其實(shí)也沒(méi)啥好解釋的. 不想在遇到群里的那種無(wú)腦杠的人, 我想用軟件實(shí)現(xiàn)這個(gè)功能, 非得說(shuō)讓我買(mǎi)個(gè)硬件放在家里.對(duì)不起,我沒(méi)錢(qián)...

遠(yuǎn)程喚醒功能需要主板支持, 理論上10年內(nèi)買(mǎi)的電腦, 主板上都有這個(gè)功能, 如果沒(méi)有,那就用不了這個(gè),只能自己買(mǎi)硬件去吧.首先說(shuō)一下整個(gè)流程的配置.

第一步 先檢查自己的主板bios里面有沒(méi)有wol的開(kāi)啟功能,具體的開(kāi)啟步驟,我不說(shuō),這個(gè)自行百度一下, 因?yàn)橹靼逍吞?hào)不同,開(kāi)啟的地方不一樣,所以用你的"主板型號(hào)+怎么開(kāi)啟wakeuponline功能" 當(dāng)關(guān)鍵詞去百度搜索,把wol功能打開(kāi). 至于說(shuō)什么要去windows系統(tǒng)的硬件管理中 允許網(wǎng)卡喚醒啟動(dòng)的設(shè)置呢, 可開(kāi)可不開(kāi), 我是沒(méi)設(shè)置系統(tǒng)的限制,都是默認(rèn), 也能從遠(yuǎn)程正常喚醒

第二步 設(shè)置路由器,路由器上做端口映射,有些路由叫虛擬服務(wù)器啥的,也有不同的叫法, 目的是將內(nèi)網(wǎng)機(jī)器的端口映射到wan口,在外網(wǎng)可以訪問(wèn)到這個(gè)端口. 端口號(hào)固定是9號(hào)端口,這里截圖你們自己對(duì)照看一下自己的路由器怎么設(shè)置.

圖片

端口映射出去之后, 一般家里的IP都是動(dòng)態(tài)IP, 經(jīng)常會(huì)變,這里我們?cè)僭O(shè)置一下DDNS(動(dòng)態(tài)域名), 域名呢, 可以自己找免費(fèi)的,也可以自己花個(gè)一二十塊錢(qián)買(mǎi)個(gè)垃圾點(diǎn)的域名. 常見(jiàn)的有什么花生殼啦, dnspod啦,都可以做DDNS服務(wù),這個(gè)一般路由器上也都有的, TPLINK 水星什么的也都有預(yù)設(shè)這個(gè)功能. 所以也不是什么難點(diǎn).

最后一步就是用autojs去喚醒了, 代碼也很簡(jiǎn)單, 此代碼是從google上隨便搜的, 然后改成autojs可用的. 但是貌似在局域網(wǎng)直接用IP來(lái)喚醒,好像無(wú)效, 然后我也沒(méi)怎么研究, 本來(lái)內(nèi)網(wǎng)喚醒,不是本次研究的重點(diǎn). 所以怎么遠(yuǎn)程喚醒,才是重點(diǎn)...

那么重點(diǎn)來(lái)了, 上代碼:

var domainName = "ddns.XXXX.online";
 //mac地址是冒號(hào)為分隔符的格式,不要用其他格式
 var macAddress = "00:8d:5c:88:94:b5";


 var wol = new wakeUpOnline();
 var res = wol.wakeUp(domainName, macAddress, 9);
 log(res);

 function wakeUpOnline() {
     importClass(java.net.InetAddress);
     importClass(java.net.DatagramPacket);
     importClass(java.net.DatagramSocket);
     importClass(java.lang.Integer);
     importClass(java.lang.System);
     /**
      * 使用autojs在外網(wǎng)遠(yuǎn)程打開(kāi)局域網(wǎng)內(nèi)的電腦 本方法僅用于外網(wǎng). 不適用于無(wú)線網(wǎng)卡
      * @param {string} host     路由器的wan口iP或者域名
      * @param {string} mac      被遠(yuǎn)程開(kāi)機(jī)電腦的網(wǎng)卡mac地址
      * @param {int} port        開(kāi)機(jī)端口號(hào), 內(nèi)網(wǎng)為9號(hào)端口. 這里填你映射出去的端口號(hào)
      * @returns 
      */
     this.wakeUp = function(host, mac, port) {
         try {
             let macBytes = getMacBytes(mac);
             let bytes = util.java.array('byte', 6 + 16 * macBytes.length);
             for (let i = 0; i < 6; i++) {
                 bytes[i] = 0xff - 256;
             }
             for (let i = 6; i < bytes.length; i += macBytes.length) {
                 System.arraycopy(macBytes, 0, bytes, i, macBytes.length);
             }
             let address = InetAddress.getByName(host);
             let packet = new DatagramPacket(bytes, bytes.length, address, port);
             let socket = new DatagramSocket();
             socket.send(packet);
             socket.close();
             return "wol_package_sent_success";
         } catch (e) {
             console.log("錯(cuò)誤信息: ", e.message);
             console.log("錯(cuò)誤發(fā)生在第%s行", e.lineNumber);
             console.log("錯(cuò)誤文件", e.fileName);
             return "wol_package_sent_fail";
         }
     }
     function getMacBytes(mac) {
         let bytes = util.java.array('byte', 6);;
         let hex = mac.split(":");
         if (hex.length != 6) {
             throw "Invalid MAC address.";
         }
         try {
             for (let i = 0; i < 6; i++) {
                 int = Integer.parseInt(hex[i], 16);
                 if (int > 127) {
                     int = int - 256;
                 }
                 bytes[i] = int;
             }
         } catch (e) {
             console.log("錯(cuò)誤信息: ", e.message);
             console.log("錯(cuò)誤發(fā)生在第%s行", e.lineNumber);
             console.log("錯(cuò)誤文件", e.fileName);
             throw "Invalid hex digit in MAC address.";
         }
         return bytes;
     }
 }

實(shí)現(xiàn)遠(yuǎn)程開(kāi)機(jī)的功能就這么簡(jiǎn)單. 可以自己再寫(xiě)個(gè)UI界面來(lái)包裝一下.好了,這次的分享就這么多.

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • IP
    IP
    +關(guān)注

    關(guān)注

    5

    文章

    1580

    瀏覽量

    149147
  • 域名
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    11271
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    936

    瀏覽量

    31952
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何實(shí)現(xiàn)遠(yuǎn)程登錄ssh并配置為開(kāi)機(jī)啟動(dòng)

    今天教論壇的發(fā)燒友們?nèi)绾?b class='flag-5'>實(shí)現(xiàn)遠(yuǎn)程登錄ssh,并配置為開(kāi)機(jī)啟動(dòng)!千萬(wàn)要注意的一點(diǎn),ssh和ssl不能混淆安裝并運(yùn)行ssh1,安裝sshapt-get install openssh-server2
    發(fā)表于 09-12 10:32

    python黑客操作:遠(yuǎn)程開(kāi)機(jī)和關(guān)機(jī)

    前言用 python 關(guān)機(jī)相信大家肯定聽(tīng)過(guò)或者實(shí)踐過(guò)吧,那么用 Python 開(kāi)機(jī)呢?這是一個(gè)神奇的方法,教你如何用 Python 來(lái)開(kāi)機(jī)。本文目標(biāo)遠(yuǎn)程開(kāi)機(jī)原理Python
    發(fā)表于 01-19 20:22

    如何用Java實(shí)現(xiàn)遠(yuǎn)程開(kāi)關(guān)機(jī)

    Java實(shí)現(xiàn)遠(yuǎn)程開(kāi)關(guān)機(jī)是做的一個(gè)在局域網(wǎng)下實(shí)現(xiàn)一臺(tái)機(jī)器對(duì)多臺(tái)機(jī)器的開(kāi)關(guān)機(jī)控制遠(yuǎn)程喚醒實(shí)現(xiàn)是通過(guò)電源的一種協(xié)議進(jìn)行控制的,需要知道被喚醒機(jī)器的
    發(fā)表于 10-28 08:28

    NodeMCU實(shí)現(xiàn)遠(yuǎn)程電腦開(kāi)關(guān)機(jī)

    NodeMCU實(shí)現(xiàn)遠(yuǎn)程電腦開(kāi)關(guān)機(jī)1.WOL(Wake on Lan)2.阿里云物聯(lián)網(wǎng)平臺(tái)設(shè)置3.NodeMCU部分程序編寫(xiě)一直都有在公司需要遠(yuǎn)程連接家里的臺(tái)式電腦的需求,遠(yuǎn)程連接控制的
    發(fā)表于 10-29 06:02

    有什么方法可以改遠(yuǎn)程開(kāi)機(jī)設(shè)備的硬件ESP8266模塊增加供電電路嗎

    有什么方法可以改遠(yuǎn)程開(kāi)機(jī)設(shè)備的硬件ESP8266模塊增加供電電路嗎?
    發(fā)表于 03-01 07:11

    如何去實(shí)現(xiàn)一種基于RT-Thread+RA6M4的遠(yuǎn)程開(kāi)機(jī)助手設(shè)計(jì)

    1、基于RT-Thread+RA6M4的遠(yuǎn)程開(kāi)機(jī)助手概要要達(dá)到遠(yuǎn)程訪問(wèn)自家電腦需要解決兩個(gè)問(wèn)題如何通知電腦開(kāi)機(jī)和如何構(gòu)建遠(yuǎn)程連接的網(wǎng)絡(luò)通道。
    發(fā)表于 06-20 10:42

    Python+微信一鍵連接實(shí)現(xiàn)遠(yuǎn)程管理Windows10操作系統(tǒng)的開(kāi)機(jī)和關(guān)機(jī)

    首先通過(guò)微信發(fā)送開(kāi)機(jī)指令,這里我使用的是 itchat 程序會(huì)調(diào)用 Paramiko 庫(kù)去 SSH 遠(yuǎn)程到內(nèi)網(wǎng)的樹(shù)莓派執(zhí)行 WakeOnLan 命令去喚醒 Windows 主機(jī)。
    的頭像 發(fā)表于 02-25 09:17 ?6164次閱讀

    使用單片機(jī)實(shí)現(xiàn)開(kāi)機(jī)開(kāi)機(jī)顯示PC機(jī)時(shí)分秒的時(shí)鐘的仿真文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用單片機(jī)實(shí)現(xiàn)開(kāi)機(jī)開(kāi)機(jī)顯示PC機(jī)時(shí)分秒的時(shí)鐘的仿真文件免費(fèi)下載。
    發(fā)表于 03-18 14:09 ?18次下載

    手機(jī)控制NodeMCU實(shí)現(xiàn)遠(yuǎn)程電腦開(kāi)關(guān)機(jī)

    NodeMCU實(shí)現(xiàn)遠(yuǎn)程電腦開(kāi)關(guān)機(jī)1.WOL(Wake on Lan)2.阿里云物聯(lián)網(wǎng)平臺(tái)設(shè)置3.NodeMCU部分程序編寫(xiě)一直都有在公司需要遠(yuǎn)程連接家里的臺(tái)式電腦的需求,遠(yuǎn)程連接控制的
    發(fā)表于 10-22 14:51 ?11次下載
    手機(jī)控制NodeMCU<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>遠(yuǎn)程</b>電腦開(kāi)關(guān)機(jī)

    基于MPSOC實(shí)現(xiàn)HDMI開(kāi)機(jī)畫(huà)面顯示

    目前基于MPSOC的一些參考設(shè)計(jì)中并沒(méi)有實(shí)現(xiàn)開(kāi)機(jī)畫(huà)面的功能 ,那在一些帶顯示屏的產(chǎn)品在設(shè)計(jì)的時(shí)候就需要這一功能,基于原來(lái)傳統(tǒng)的方式也可以在FPGA中來(lái)實(shí)現(xiàn),今天分享一個(gè)在PS側(cè)來(lái)實(shí)現(xiàn)
    發(fā)表于 08-02 10:23 ?1105次閱讀
    基于MPSOC<b class='flag-5'>實(shí)現(xiàn)</b>HDMI<b class='flag-5'>開(kāi)機(jī)</b>畫(huà)面顯示

    Autojs多卡手機(jī)后臺(tái)靜默發(fā)送短信

    第三方應(yīng)用發(fā)送短信,需要授予短信權(quán)限.沒(méi)有權(quán)限的話. 沒(méi)法運(yùn)行本文中的代碼. 申請(qǐng)短信權(quán)限,包括怎么在AndroidManifast.xml文件中聲明權(quán)限,百度一下就有答案. 這里不贅述了, pro版的Autojs,有專(zhuān)門(mén)的配置權(quán)限的選項(xiàng),更簡(jiǎn)單一些.
    的頭像 發(fā)表于 03-03 10:26 ?2067次閱讀

    如何在Autojs中優(yōu)雅的使用webView

    對(duì)于需要寫(xiě)UI的腳本來(lái)說(shuō),使用安卓的xml方式去寫(xiě)一個(gè)好看的UI出來(lái),在autojs中就顯得過(guò)于艱難,雖說(shuō)autojs在很早之前就支持了安卓原生的方式寫(xiě)UI,但對(duì)于只會(huì)js的我來(lái)說(shuō)還是太難了
    的頭像 發(fā)表于 03-03 13:40 ?5304次閱讀
    如何在<b class='flag-5'>Autojs</b>中優(yōu)雅的使用webView

    Autojs后臺(tái)靜默發(fā)短信

    要判斷是否發(fā)送成功和接收成功,就需要注冊(cè)兩個(gè)廣播的監(jiān)聽(tīng).來(lái)得到結(jié)果.下面分別記錄一下免費(fèi)版Autojs和AutojsPro8.0以上的版本如何注冊(cè)一個(gè)監(jiān)聽(tīng).
    的頭像 發(fā)表于 03-03 13:47 ?2861次閱讀

    如何使用Autojs給指定QQ好友點(diǎn)贊

    使用Autojs來(lái)給自己的好友點(diǎn)贊,復(fù)制下面的代碼到autojs這個(gè)腳本工具中,執(zhí)行即可!
    的頭像 發(fā)表于 03-03 14:24 ?986次閱讀

    如何實(shí)現(xiàn)AB PLC遠(yuǎn)程監(jiān)控

    AB的PLC需要在異地實(shí)現(xiàn)遠(yuǎn)程監(jiān)控和調(diào)試,選用了巨控GRM530遠(yuǎn)程通訊模塊,那GRM530是如何實(shí)現(xiàn)AB PLC遠(yuǎn)程監(jiān)控的呢?
    的頭像 發(fā)表于 05-06 08:31 ?1456次閱讀
    如何<b class='flag-5'>實(shí)現(xiàn)</b>AB PLC<b class='flag-5'>遠(yuǎn)程</b>監(jiān)控