`
dss16694
  • 浏览: 147281 次
社区版块
存档分类
最新评论

远程发送开机指令

阅读更多

转发一段用java发送远程开机数据包的代码:

另外,在线发送的网址:http://www.depicus.com/wake-on-lan/woli.aspx

 

package com.lh.openOS;
 
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
 
public class TestOpenOS
{
    private int port = 10000;
    private String mac = "8C-89-A5-19-82-9A";
    private String ipAddress = "255.255.255.255";
 
    public TestOpenOS()
    {
        // TODO Auto-generated constructor stub
    }
     
    private void setMac(String mac)
    {
        this.mac = mac;
    }
     
    public TestOpenOS(int port, String mac, String ipAddress)
    {
        this.port = port;
        this.mac = mac;
        this.ipAddress = ipAddress;
    }
 
    public void sendOpenOS()
    {
        InetAddress destHost = null;
        DatagramSocket ds = null;
        try
        {
            destHost = InetAddress.getByName(ipAddress);
            byte[] destMac = getMacBytes(mac);
            byte[] magicBytes = new byte[102];
 
            // 将数据包的前六位放入0xFF即“FF”的二进制
            // 发一个BroadCast包,包的内容包括以下数据就可以了。
            // FF FF FF FF FF FF,6个FF是数据的开始,
            // 紧跟着16次MAC地址就可以了。
            for (int i = 0; i < 16; i++)
            {
                for (int j = 0; j < destMac.length; j++)
                {
                    magicBytes[6 + destMac.length * i + j] = destMac[j];
                    magicBytes[j] = (byte) 0xFF;
                }
            }
 
            // --------------------查看数据报发出的数据---------------------
            for (int i = 1; i <= 102; i++)
            {
                if (((i - 1) % 6) == 0)
                {
                    System.out.println();
                }
                System.out.print(magicBytes[i - 1] + "===");
            }
 
//          System.out.println("port =" + port + ", destHost=" + destHost + ",magicBytes.length = " + magicBytes.length);
             
             
            DatagramPacket dp = null;
            try
            {
                dp = new DatagramPacket(magicBytes, magicBytes.length, destHost, port);
                ds = new DatagramSocket();
                ds.send(dp);
            }
            catch (Exception e)
            {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
        catch (Exception e)
        {
            // TODO: handle exception
            e.printStackTrace();
        }
        finally
        {
            if (null != ds)
            {
                //关闭数据报流
                ds.close();
            }
        }
    }
 
    // 远程关机
    public void sendCloseOS()
    {
 
    }
     
    /**
     *  将16进制的mac地址转换为二进制 
     * @param macStr
     * @return 
     * @throws IllegalArgumentException
     */
    private static byte[] getMacBytes(String macStr) throws IllegalArgumentException
    {
        byte[] bytes = new byte[6];
        String[] hex = macStr.split("(\\:|\\-)");
        if (hex.length != 6)
        {
            throw new IllegalArgumentException("mac 地址有问题,你看看对不对?Invalid MAC address.");
        }
        try
        {
            for (int i = 0; i < 6; i++)
            {
                bytes[i] = (byte) Integer.parseInt(hex[i], 16);
            }
        }
        catch (NumberFormatException e)
        {
            throw new IllegalArgumentException("Invalid hex digit in MAC address.");
        }
        return bytes;
    }
 
    public static void main(String[] args)
    {
        TestOpenOS w = new TestOpenOS();
        w.sendOpenOS();
         
        w.setMac("8C-89-A5-19-80-3D");
        w.sendOpenOS();
    }
}

 

 

分享到:
评论

相关推荐

    IP地址扫描及发送开机指令

    "IP地址扫描及发送开机指令"这个主题涉及了两个核心概念:IP地址扫描和网络唤醒(Wake-on-LAN,简称WoL)。接下来,我们将深入探讨这两个知识点。 首先,IP地址扫描是网络管理的基本工具,用于发现并列举网络上所有...

    delphi 局域网内调用批处理文件实现远程开机/关机

    Delphi中的`UOpenORclose`组件可能也包含了这样的功能,通过调用系统API或者WMI接口,向目标计算机发送关机指令。 总的来说,这个Delphi项目提供了一个实用工具,使得在局域网环境中远程控制计算机的开关机变得更加...

    远程开机演示程序--Demo

    当这个数据包被发送到目标计算机的网络上,具备WOL功能的网卡接收到后会解析并执行开机指令。 为了实现这一功能,开发者可能使用了低级别的网络编程API,如Winsock库,来创建套接字并发送数据包。同时,可能还需要...

    远程开机关机_esp8266关机_esp8266_esp8266开机棒_esp8266开机棒_esp8266远程开机_

    在远程开机关机场景中,ESP8266可以通过Wi-Fi网络发送指令到目标设备,控制其电源状态。 2. 远程控制原理: 远程控制的核心是通过ESP8266建立一个服务器或者连接到云端服务,接收来自互联网的指令。用户可以使用...

    局域网内远程开机及关机

    在IT领域,局域网(LAN)内的远程开机与关机功能是一项实用的技术,它允许用户通过网络控制其他计算机的启动和关闭,极大地提升了工作效率,特别是在管理多台设备时。以下将详细介绍这一技术的实现原理、相关工具...

    远程网络开机WesleyWakeOnLan_20150911

    然后,工具会将这个Magic Packet发送到网络上,目标计算机接收到后就会执行开机指令。 4. 配置路由器:为了确保Magic Packet能到达目标计算机,可能需要在路由器上进行一些配置,比如开启端口转发或者允许广播包...

    远程开机详细教程

    当电脑关闭或处于休眠状态时,通过发送特定类型的数据包——“魔术包”(Magic Packet)至目标电脑的网卡,网卡接收到这个数据包后会向主板发送开机指令,从而实现远程唤醒。 要实现互联网远程唤醒电脑,有几个关键...

    perl脚本运用udp实现控制其它电脑开机

    在控制开机的例子中,你需要创建一个UDP套接字,然后将包含开机指令的报文发送到目标计算机的特定端口。这个报文通常会包含目标电脑的MAC地址,因为MAC地址是网络设备的唯一物理标识,在局域网内可以用来定位设备。 ...

    远程开机程序netwaker2.1简体中文版本

    NetWaker 2.1就是利用了这一特性,让用户可以通过互联网远程发送“唤醒信号”到目标计算机。 要使用NetWaker 2.1,首先你需要知道目标电脑的MAC地址。MAC地址是网卡的物理地址,每个网络设备都有独一无二的MAC地址...

    远程开机软件

    这个数据包会被广播到网络上,被正确配置的设备接收到后,就会执行开机指令。 5. **接收反馈**:一旦目标设备被成功唤醒,控制端可能会接收到反馈信息,确认远程开机操作已经完成。 值得注意的是,当目标设备位于...

    vc写的局域网远程开机程序

    现在很多主板都有远程唤醒的功能、只要接通电源、与局域网连上、就可以通过发送一个指令到特定网卡(MAC地址)就能开机. 我将程序集成了一下,可以通过主机名或者ip地址就得到局域网内任何一台电脑的mac地址。这样...

    远程开机Windows版.ha_WakeOnLanGui_1.0.rar

    《远程开机技术在Windows环境中的应用——以ha_WakeOnLanGui_1.0为例》 远程开机技术,简称WOL(Wake-On-Lan),是一种允许用户在远程位置启动计算机的技术。它通过网络发送一个特殊的“魔法包”(Magic Packet)到...

    小爱同学电脑远程开关机_esp8266小爱同学电脑远程开关机_

    标题中的“小爱同学电脑远程开关机”是指利用小米的小爱同学智能音箱,通过与互联网芯片ESP8266的交互,实现对电脑的远程控制,包括开机和关机功能。这种技术结合了物联网(IoT)和智能家居的元素,使得用户可以通过...

    远程开机关机重启电脑免费版软件

    远程控制软件的工作原理通常基于TCP/IP协议,通过发送特定的指令到目标计算机,模拟本地操作来实现远程控制。例如,开机功能可能利用网络唤醒(Wake-on-LAN,WOL)技术,通过发送一个包含特定MAC地址的广播数据包来...

    51单片机远程开机卡项目.zip

    在这个项目中,51单片机作为核心控制器,通过接收阿里云服务器发送的TCP命令,实现了对台式机主板的远程开机和关机功能。以下将详细解析这个项目的实施过程和技术要点。 首先,51单片机,全称为Intel 8051系列...

    远程开关机管家

    通过使用特定的协议和技术,如TCP/IP、UDP等,远程开关机管家能够在局域网内发送指令,使目标计算机执行开机、关机或者重启操作。这对于需要定时开关机、统一维护或更新系统的环境尤其有用,避免了逐一手动操作的...

    网络批量开机工具

    5. 执行任务:通过CMC启动任务,工具将自动向网络中的目标设备发送开机指令,等待设备响应并启动。 6. 监控与反馈:观察设备的开机状态,检查操作日志,确保所有设备按预期操作。 总的来说,网络批量开机工具是IT...

    基于单片机的远程开关机模块的设计与实现.pdf

    3. 控制面板的设计:控制面板需要直观、易操作,以便于操作人员发送远程控制指令。 4. 远程控制软件的设计:软件部分需要能够处理各种状态信息,并将操作指令转换为相应的控制信号。 综上所述,本文介绍的远程开...

    基于ESP8266开发板远程舵机的实现

    4. **网络协议**:可能采用HTTP、MQTT或其他网络协议,接收远程设备(如手机、电脑)发送的控制指令。 5. **测试与调试**:上传代码到ESP8266后,通过功能演示视频验证舵机是否能按预期响应网络指令。 6. **安全与...

Global site tag (gtag.js) - Google Analytics