param类

  1. package com.meeno.framework.wol.params;
  2. import lombok.Getter;
  3. import lombok.NoArgsConstructor;
  4. import lombok.Setter;
  5. @Setter
  6. @Getter
  7. @NoArgsConstructor
  8. public class WolParam {
  9. /**
  10. * ip
  11. */
  12. private String ip;
  13. /**
  14. * mac
  15. */
  16. private String mac;
  17. public WolParam(String ip, String mac) {
  18. this.ip = ip;
  19. this.mac = mac;
  20. }
  21. }

WolUtils

  1. package com.meeno.framework.wol;
  2. import com.meeno.framework.wol.params.WolParam;
  3. import org.springframework.util.CollectionUtils;
  4. import java.net.DatagramPacket;
  5. import java.net.DatagramSocket;
  6. import java.net.InetAddress;
  7. import java.util.Arrays;
  8. import java.util.List;
  9. import java.util.stream.Collectors;
  10. public class WolUtils {
  11. /**
  12. * 批量唤醒
  13. * @param params
  14. */
  15. public static void batchWake(WolParam... params){
  16. if(params != null && params.length != 0){
  17. List<WolParam> list = Arrays.stream(params).collect(Collectors.toList());
  18. batchWake(list);
  19. }
  20. }
  21. /**
  22. * 批量唤醒
  23. * @param list
  24. */
  25. public static void batchWake(List<WolParam> list){
  26. if(!CollectionUtils.isEmpty(list)){
  27. for (WolParam wolParam : list) {
  28. wake(wolParam.getIp(), wolParam.getMac(), 4343);
  29. }
  30. }
  31. }
  32. /**
  33. * 唤醒
  34. * @param ip
  35. * @param macAddr
  36. * @param port
  37. */
  38. // 魔术包的组成
  39. // 魔术包的组成非常固定,由6对“FF”组成前缀,其余为重复16次的MAC地址组成。例如:试验机的MAC为:“28-D2-44-35-68-A7”,那么魔术包为:
  40. // “0xFFFFFFFFFFFF28D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A728D2443568A7”
  41. public static void wake(String ip, String macAddr, int port){
  42. try {
  43. //String ip = "192.168.0.72";
  44. //mac地址
  45. //String macAddr = "70-85-C2-8E-36-0B";
  46. //端口
  47. //int port = 4343;
  48. byte[] macByte = new byte[6];
  49. String[] ips = macAddr.split("\\:|\\-");
  50. for (int i = 0; i < 6; i++) {
  51. macByte[i] = (byte) Integer.parseInt(ips[i], 16);
  52. }
  53. // 用来存储网络唤醒数据包
  54. byte[] bys = new byte[6 + 16 * macByte.length];
  55. for (int i = 0; i < 6; i++) {
  56. bys[i] = (byte) 0xff;
  57. }
  58. for (int i = 6; i < bys.length; i += macByte.length) {
  59. System.arraycopy(macByte, 0, bys, i, macByte.length);
  60. }
  61. // 将字符形式的IP地址转换成标准的IP地址
  62. InetAddress address = InetAddress.getByName(ip);
  63. // 生成标准的数据报
  64. DatagramPacket pack = new DatagramPacket(bys, bys.length, address, port);
  65. // 创建标准套接字,用来发送数据报
  66. DatagramSocket socket = new DatagramSocket();
  67. // 发送魔法包
  68. socket.send(pack);
  69. socket.close();
  70. System.out.println("发送结束");
  71. } catch (Exception e) {
  72. e.printStackTrace();
  73. } catch (Throwable e) {
  74. e.printStackTrace();
  75. }
  76. }
  77. public static void main(String[] args) {
  78. batchWake(new WolParam("192.168.0.72","70-85-C2-8E-36-0B"));
  79. }
  80. }

java使用wol远程开机的更多相关文章

  1. linux 通过wol远程开机【转】

    转自:http://yangbajing.blog.chinaunix.net/uid-10480699-id-5179860.html 今天发现个可以对linux服务器进行远程开机的软件-wakeo ...

  2. WOL远程开机

    最近在一直都在研究PC机硬件和软件相结合的软件,硬件信息都是通过C++与驱动结合获取.对于一个好久都没有接触C++的人来说看这些东西太费劲了,必须的重新捡一下C++的基础知识,必然也少不了C知识,底层 ...

  3. java代码实现网络远程开机

    http://my.oschina.net/kingfire/blog/156764 概述 远程开机(Wake onLAN)是指通过网络实现对服务器或者pc启动运行,现在很多网卡都支持的这个功能. 其 ...

  4. java实现远程开机

    import java.io.IOException; import java.net.*;public class 远程开机 { public static void main(String[] a ...

  5. FRP+WoL实现远程开机+远程桌面

    FRP+WoL实现远程开机+远程桌面 故事背景 这是一个很复杂而且很久远的故事,如果要讲的话,这个故事可以追溯到1981年(「都是废话,没有干货,如果不感兴趣请从第二章开始」),简单来说: 1981年 ...

  6. C#实现局域网内远程开机

    1.远程开机原理 远程开机Wake on LAN(WOL),俗称远程唤醒,远程唤醒的实现主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊 ...

  7. Python 远程开机

    用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机. 本文目标 远程开机原理 Python 远程开机代码实现 Python ...

  8. C#实现远程开机(局域网测试通过)

    首先介绍相关知识. UDP协议 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联 ...

  9. linux远程开机

    它需要wakeonlan这个软件,     从何处得到它?     它的官方站是:http://sourceforge.net/projects/wake-on-lan/     如果使用rpm包可以 ...

随机推荐

  1. 记两道最近做的pwn题(ciscn_2019)

    这两题为什么要记录呢,一个是我发现网上很多教程没写清楚(也可能是我太菜了),二是细节点很多,不同的大佬方式不太一样,有很多细节需要注意 ciscn_2019_es_2 这题是栈迁移的题,先上exp 1 ...

  2. Django基础-001

    一.开发模式 MVC模式: model:数据库 view:前端展示 controller:逻辑控制MTV模式 model:数据库 view:逻辑控制 template:前端展示 二.Django介绍 ...

  3. Python使用笔记005-文件操作(二)

    1.1 打开文件模式 # r r+ r+读是没问题的,写的话,会覆盖原来的内容,文件不存在时会报错# w w+ w+用来新的文件没问题,旧的文件会覆盖原来的内容# a a+ a+写是追加,读不到是因为 ...

  4. C语言:GB2312编码和GBK编码,将中文存储到计算机

    计算机是一种改变世界的发明,很快就从美国传到了全球各地,得到了所有国家的认可,成为了一种不可替代的工具.计算机在广泛流行的过程中遇到的一个棘手问题就是字符编码,计算机是美国人发明的,它使用的是 ASC ...

  5. C语言入门思路

    C语言编程入门 0.数学中的常数在编程语言中称为常量,是一直不变的.如1,2,'a',"abc",3456,34.56等1.变量:类似于数学中的未知数.实际上就是指可用内存的一块区 ...

  6. 【动画消消乐】HTML+CSS 自定义加载动画:清新折叠方块效果 063(附源码及原理详解)

    前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出- 自我介绍ଘ(੭ˊᵕˋ)੭ 昵称:海轰 标签:程序猿|C++选手|学生 简介:因C语言结识编程,随后转入计算机专 ...

  7. 禁用ipv6的两种方法

    1 通过系统配置文件/etc/sysctl.conf 在sysctl.conf文件中添加行 # 禁用整个系统所有接口的IPv6 net.ipv6.conf.all.disable_ipv6 = 1 # ...

  8. 【洛谷P1795 无穷的序列_NOI导刊2010提高(05)】模拟

    分析 map搞一下 AC代码 #include <bits/stdc++.h> using namespace std; map<int,int> mp; inline int ...

  9. mybatis介绍以及配置

    一.概念 1.作用:简化dao层,是框架的一部分,常叫SSM,或SSI 2.历史:之前的版本叫ibatis,三版之后叫mybatis 3.什么是orm?object,relational,mappin ...

  10. 【论文集合】机器翻译NMT中数据打分和数据选择的经典方法

    根据Survey of Data-Selection Methods in Statistical Machine Translation的总结,MT中的数据选择分类图如下: 使用场景 数据使用的场景 ...