当前位置: 首页 > news >正文

flutter实现UDP发送魔法包唤醒主机

魔法包

魔法包是用16进制表示的数据包,它是由固定的前缀数据(FFFFFFFFFFFF)以及固定重复次数(16次)的目标主机MAC地址组成。
假设目标主机的MAC地址是:"50:eb:f6:27:ae:a8"
那么魔法包就是[FFFFFFFFFFFF50EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA850EBF627AEA8]

实现代码

import 'dart:io';void sendWOLPacket(String host, String mac) async {// 将MAC地址转换为字节序列List<int> macBytes = mac.split(':').map((s) => int.parse(s, radix: 16)).toList();// 构造魔术包List<int> packet = List.filled(6, 0xFF) + List<int>.generate(16 * macBytes.length, (index) => macBytes[index % macBytes.length]);RawDatagramSocket? _socket;try {_socket = await RawDatagramSocket.bind(InternetAddress.anyIPv4, 0);// 创建UDP Socket并发送魔术包_socket.broadcastEnabled = true;for (var i = 0; i < 5; i++) {_socket.send(packet, InternetAddress(host), 0);await Future.delayed(const Duration(milliseconds: 150));_socket.send(packet, InternetAddress(host), 7);await Future.delayed(const Duration(milliseconds: 150));_socket.send(packet, InternetAddress(host), 9);await Future.delayed(const Duration(milliseconds: 150));}print("success", "发送完成");} catch (e) {print("error", "出错了;$e");}_socket?.close();
}

相关文章:

  • 碳素钢化学成分分析 螺纹钢材质鉴定 钢材维氏硬度检测
  • 【Unity回调函数】创建自己的外部回调函数——以按钮点击为例
  • 静态工厂方法替代构造器
  • 【ai】Omniverse 微服务架构及NVIDIA Omniverse™ Launcher
  • 【C语言】32个关键字
  • 软件版本号的管理
  • 【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版9(附带项目源码)
  • 自动求导实现与可视化
  • 算法训练营day56
  • MT2096 数列分段
  • 六种图算法的python实现
  • 前端的强缓存和协商缓存
  • Pixi.js学习 (六)数组
  • 前端面试题日常练-day60 【面试题】
  • 鸿蒙轻内核M核源码分析系列六 任务及任务调度(2)任务模块
  • 自己简单写的 事件订阅机制
  • 【css3】浏览器内核及其兼容性
  • 07.Android之多媒体问题
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • CSS居中完全指南——构建CSS居中决策树
  • Flex布局到底解决了什么问题
  • magento 货币换算
  • react-native 安卓真机环境搭建
  • select2 取值 遍历 设置默认值
  • socket.io+express实现聊天室的思考(三)
  • spring boot下thymeleaf全局静态变量配置
  • Theano - 导数
  • Twitter赢在开放,三年创造奇迹
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 紧急通知:《观止-微软》请在经管柜购买!
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​queue --- 一个同步的队列类​
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #《AI中文版》V3 第 1 章 概述
  • #565. 查找之大编号
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #控制台大学课堂点名问题_课堂随机点名
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (09)Hive——CTE 公共表达式
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)u-boot-nand.bin的下载
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • ***测试-HTTP方法
  • .JPG图片,各种压缩率下的文件尺寸
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET 4.0中的泛型协变和反变
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net 调用php,php 调用.net com组件 --
  • .NET/C# 项目如何优雅地设置条件编译符号?