C语言实现wake on lan(网络唤醒)

2023-05-16

        wake on lan是一种网络唤醒功能,它可以实现远程开机,刚好实验室有一台ftp服务器,因为不是24小时开机的,所以每次开机都要跑过去用手按开关,非常麻烦,于是在网上找了下资料,自己实现了一把,并在windows下用Qt写了个简单的界面,以后想开服务器就方便了。原理就是源主机广播一个特殊的数据包给目的主机,前提是目的主机的主板支持wake on lan并在BIOS里已经设置好,还有就是要知道目的主机的MAC地址。这个特殊的数据包叫做magic packet,它由102个字节组成,最前面六个字节为0xFF,其他字节为目的主机的MAC地址(6个字节为一组,共16组),如下图所示:

 

       知道这个原理之后就可以很容易实现了,实现代码如下,本人亲测。


 1 #include <stdio.h>
 2 #include <arpa/inet.h>
 3 #include <sys/ioctl.h>
 4 #include <net/if.h>
 5 #include <string.h>
 6 #include <unistd.h>
 7 #include <stdlib.h>
 8 
 9 
10 int main(int argc, char* argv[])
11 {
12         unsigned char mac[6]={0x00,0x10,0x20,0x30,0x40,0x50};//目的主机MAC地址,例如: 00:10:20:30:40:50
13         unsigned char packet[102];
14         struct sockaddr_in addr;
15         int sockfd, i,j, on = 1;
16 
17         //构建magic packet
18         for(i=0;i<6;i++)            
19             packet[i] = 0xFF;    
20             
21         for(i=1;i<17;i++)
22             for(j=0;j<6;j++)
23                 packet[i*6+j] = mac[j];
24         
25         //UDP
26         sockfd = socket(AF_INET, SOCK_DGRAM, 0);
27         //广播
28         setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST,&on, sizeof(on));
29         if(sockfd < 0)
30             exit(0);
31                 
32         memset((void*)&addr, 0, sizeof(addr));
33         addr.sin_family = AF_INET;
34         addr.sin_port = htons(10000);
35         addr.sin_addr.s_addr = inet_addr("xxx.xxx.xxx.xxx");//广播地址
36         
37         sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&addr, sizeof(addr));
38         close(sockfd);
39             
40         return 0;
41 }  

实际中需要根据目的主机来修改MAC地址和广播地址。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言实现wake on lan(网络唤醒) 的相关文章

  • IOS-如何优雅地拦截按钮事件(判断是否需要登录)

    关于这个标题 xff0c 起因是这样的 最近一次做项目需求时 xff0c 遇到这样一个需求 xff0c 就是本来我们App是必须注册或者第三方登录才可以使用 xff0c 现在希望不登录也可以浏览App里面的内容 xff0c 只是在需要的时候
  • postman安装使用教程---图文讲解

    一 安装postman 1 xff0c 安装包安装 官网下载地址 https www getpostman com 选择好对应的版本下载 下载完后直接安装 2 xff0c 插件包安装 可以在谷歌的应用商店里面找到 或者在网上下载 准备了一个
  • ArUco----一个微型现实增强库的介绍及视觉应用(一)

    ArUco 一个微型现实增强库的介绍及视觉应用 xff08 一 xff09 ArUco 一个微型现实增强库的介绍及视觉应用 xff08 一 xff09 一 ArUco简介 ArUco是一个开源的微型的现实增强库 xff0c 目前好像已经集成
  • matlab 图像基本矩阵,MATLAB基本的使用方法归纳(图像,矩阵及函数)

    读取图像 xff1a 用imread函数读取图像文件 xff0c 文件格式可以是TIFF JPEG GIF BMP PNG等 比如 gt gt f 61 imread 39 chestxray jpg 39 读进来的图像数据被保存在变量f中
  • VR直播云服务解决方案

    VR直播 通过VR xff08 虚拟现实 xff09 技术 xff0c 用户通过佩戴相关硬件设备 xff0c 通过平台提供的APP进行直播观看 主播需采用360 全景的拍摄设备 xff0c 捕捉多角度画面 xff0c 进行多画面传输后 xf
  • VirtualBox快照(Snapshot)功能使用及注意事项

    这几天在使用QT编写一个ARM的图形化应用程序 xff0c 需要在PC端使用linux下的QtCreator 搭建环境神马的还是挺麻烦的一个过程 依照我的风格 xff0c 这么麻烦的东西一定不要重复做第二遍 剧透下 xff0c 最后还是很悲
  • docker学习笔记11:Dockerfile 指令 CMD介绍

    我们知道 xff0c 通过docker run 创建并启动一个容器时 xff0c 命令的最后可以指定容器启动后在容器内立即要执行的指令 xff0c 如 xff1a docker run i t ubunu bin bash 表示容器启动时立
  • 麦克纳姆轮运动学分析

    麦克纳姆轮运动学分析 是最常见的安装方式 麦轮底盘的正逆运动学模型 以O 长方形的安装方式为例 xff0c 四个轮子的着地点形成一个矩形 正运动学模型 xff08 forward kinematic model xff09 将得到一系列公式
  • 传小米秘密自研操作系统mios 将应用于小米4(

    http tieba baidu com f kw 61 E5 8D 97 E4 BA AC E8 85 8B E8 87 AD E5 8C BB E9 99 A2 E3 80 90 E5 92 A8 E8 AF A2QQ EF BC 9A
  • OV2SLAM 安装运行

    OV2SLAM 安装运行 1 安装依赖项1 1 安装 OpenGV1 2 安装OV2SLAM 2 运行 OV2SLAM2 1 运行EUROC数据集2 2 运行KITTI数据集 参考资料 OV2SLAM 1 是2021年新开源出来的单目 43
  • IMU助力无人机自主精准着陆

    一盒用户急需的药品由无人机配送到小区中 xff0c 一键下单10分钟热气腾腾的外卖随着无人机送到家门口 这不是科幻作品中才有的景象 xff0c 而是已经实现的场景 但在实际应用中 xff0c 无人机配送还存在着预估位移不准确 着陆偏差过大等
  • Maven自动FTP远程部署

    参照官网文档 xff1a https maven apache org plugins maven deploy plugin examples deploy ftp html 1 在pom xml中加入 xff1a lt project
  • 面试感悟----一名3年工作经验的程序员应该具备的技能

    原文地址http www cnblogs com xrq730 p 5260294 html xff0c 转载请注明出处 xff0c 谢谢 xff01 前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结 xff0c 因此有了这
  • c语言菜单经典实例

    include lt conio h gt include lt dos h gt include lt graphics h gt include lt stdio h gt include lt stdlib h gt 定义一些常数 d
  • Docker(二):微服务教程

    Docker 是一个容器工具 xff0c 提供虚拟环境 很多人认为 xff0c 它改变了我们对软件的认识 站在 Docker 的角度 xff0c 软件就是容器的组合 xff1a 业务逻辑容器 数据库容器 储存容器 队列容器 xff0c Do
  • 让进程在后台可靠运行的几种方法

    Linux 技巧 xff1a 让进程在后台可靠运行的几种方法 想让进程在断开连接后依然保持运行 xff1f 如果该进程已经开始运行了该如何补救 xff1f 如果有大量这类需求如何简化操作 xff1f 我们经常会碰到这样的问题 xff0c 用
  • 小米路由器mini拆解,附上独家对MT7620A见解

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 小米路由mini采用单核MT7620A处理器 xff0c 搭配128MB DDR3 xff0c 内置智能家居控制中心 xff0c 和标准版一样提供2x2双频天线 xff0c
  • 采购收货的异常

    仓库发OA过来 xff0c 说有一票采购订单收货的时候提示红灯错误 xff0c 截图如下 xff1a 双击错误消息 xff0c 提示该消息是出自于M7429 百度 xff0c 没有相关资料 问群里 xff0c 也没人懂 于是通过 H 来查看
  • 【ES6基础】解构赋值(destructuring assignment)

    我们经常可以在其他编程语言 如GO语言 中看到多返回值这种特性 xff0c 因为在很多实际场景中 xff0c 函数的返回值中 xff0c 函数的返回值并不只有一个单一的值 ES6之前 xff0c 并没有可以直接使用语法来实现多返回值的特性
  • 视觉导航小车开源项目(1)—小车底盘

    小车底盘 1 更新日志1 1 硬件方面1 2 软件方面 2 底盘硬件结构2 1 底盘机械组装2 2 底盘硬件框图2 3 底盘电气系统 3 差速底盘软件结构3 1 控制板介绍3 2 代码结构3 3 差速底盘运动学模型 参考资料 注 xff1a

随机推荐

  • 一些webpack配置优化手段

    loader 设置include或者exclude 一般第三方包都是打包好的 xff0c 无需再打包 xff0c 特别是babel loader eslint loader span class hljs attr test span sp
  • 基于iframe的移动端嵌套

    需求描述 上上周接到了新的项目 xff0c 移动端需要做一个底部有五个导航 xff0c 点击不同的导航页面主体显示不同的页面 xff0c 其中两个页面是自己做 xff0c 而另外三个页面是引用另外三个网址 xff0c 其中两个网址为内部项目
  • Vue实战篇(PC端商城项目)

    这是一个基于vue全家桶 43 node js 43 express 43 mysql实现的商城网站 项目github地址 xff1a vueMall 查看demo 地址 如果觉得对您有帮助 xff0c 您可以在左下角给我个喜欢支持一下 x
  • https安全证书过期失效的原因以及解决方法

    一 网站https安全证书过期原因分析 xff1a 1 当前电脑系统时间错误 xff0c 所有的http安全证书都有颁发日期和截止日期 xff0c 电脑系统时间在证书有效时间区间之外有可能导致浏览器提示网站https安全证书已过期或还未生效
  • 安装OPENWRT后打不开管理页面的解决方法

    路由器刷入了OPENWRT 结果发现刷入的固件没有带Luci 以下是本人手动安装Luci的方法 开始安装Luci所需的依赖包 opkg install http 192 168 1 2 uhttpd 27 brcm47xx ipk opkg
  • Postgresql查看表结构和字段注释

    Postgresql查看表结构和字段注释 一 xff1a 查看表结构 xff08 字段 xff09 信息 xff1a Select table name column name data type character maximum len
  • 技术淘宝

    精度前端学习 前端开发100天 xff08 置顶 xff09 http alloyteam github io CodeGuide https github com AlloyTeam CodeGuide cmd控制台的小技巧 xff1a
  • Migration: Find Duplicate Objects in Application Desinger Projects

    The sql will identify duplicate objects in different application designer projects to eliminate duplicate work by develo
  • SQL server loginname alias mapping problem.

    exec sp changedbowner 39 Aambriore mra 39 EXEC sp change users login 39 Auto Fix 39 39 lts 39 null Exec sp change users
  • [ASP.NET MVC 小牛之路]08 - Area 使用

    ASP NET MVC允许使用 Area xff08 区域 xff09 来组织Web应用程序 xff0c 每个Area代表应用程序的不同功能模块 这对于大的工程非常有用 xff0c Area 使每个功能模块都有各自的文件夹 xff0c 文件
  • OpennVINS运行、评估笔记

    1 安装运行 1 1 下载 amp 编译 span class token builtin class name cd span catkin ws src span class token function git span clone
  • 关于apm飞控烧bootloader

    最近一直由于学校大创申请的的四轴 xff0c 一直在做这玩意 xff0c 哎 xff0c 无奈这货实在不像想象的那样简单 xff0c 自己写了N久飞控 xff0c 也没把飞机飞起来 xff0c 只能先用开源的apm飞控练练手呗 xff0c
  • c语言实现subs指令,周立功LPC系统移植学习之c启动代码修改一

    一 系统移植用c启动代码 Copyright c Guangzou ZLG MCU Development Co LTD graduate school http www zlgmcu com File Info
  • Google开源项目phpdoc-zh【PHP中文手册】

    为什么80 的码农都做不了架构师 xff1f gt gt gt 现在不用愁找不到好的PHP中文手册 xff0c 没乱码 xff0c 更新速度快 xff0c 翻译准确 xff01 项目地址 xff1a http code google com
  • 计算机与我的生活英语作文,描写一天的生活英语作文(通用7篇)

    描写一天的生活英语作文 通用7篇 在平凡的学习 工作 生活中 xff0c 大家都不可避免地要接触到作文吧 xff0c 作文要求篇章结构完整 xff0c 一定要避免无结尾作文的出现 相信很多朋友都对写作文感到非常苦恼吧 xff0c 下面是小编
  • reStructuredText语法简单说明

    reStructuredText 是扩展名为 rst的纯文本文件 xff0c 含义为 34 重新构建的文本 34 34 xff0c 也被简称为 xff1a RST或reST 官方网址 xff1a http docutils sourcefo
  • 优秀的程序员需要擅长数学吗?

    天有很多年轻人或经验不足的程序员 在 论坛发帖 在 Stack Exchange 网站问 xff1a 为了成为优秀的程序员 xff0c 我需要擅长数学吗 xff1f xff0c 在我还年轻的时候 xff0c 我也问自己同样的问题 最近 xf
  • datax同步MySQL数据到mongodb

    根据生产需要 xff0c 同步非实时数据到mongodb 经过同事间的不断研究 xff0c 特弄出了这样一套方案 xff1a MySQL xff08 RDS xff09 gt Datax gt mongodb 我们的mysql用的是阿里云的
  • 网络虚拟化

    网络虚拟化的内容一般指虚拟专用网络 对网络连接的概念进行了抽象 xff0c 允许远程用户访问组织的内部网络 xff0c 就像物理上连接到该网络一样 网络虚拟化可以帮助保护 IT 环境 xff0c 防止来自 Internet 的威胁 xff0
  • C语言实现wake on lan(网络唤醒)

    wake on lan是一种网络唤醒功能 xff0c 它可以实现远程开机 xff0c 刚好实验室有一台ftp服务器 xff0c 因为不是24小时开机的 xff0c 所以每次开机都要跑过去用手按开关 xff0c 非常麻烦 xff0c 于是在网