网络唤醒 C语言_网络唤醒可以跨网段吗-程序员宅基地

技术标签: 局域网  

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

 

#include <stdio.h>
 #include <arpa/inet.h>
 #include <sys/ioctl.h>
 #include <net/if.h>
 #include <string.h>
 #include <unistd.h>
 #include <stdlib.h> 
 
 int main(int argc, char* argv[])
 {

 
   if (argc!=3||argc!=5) {
    printf("\nUsage:  %s  -mac 00:10:20:30:40:50  -adr 192.168.1.255\n",argv[0]);
   }
     unsigned char mac[6]={0x00,0x10,0x20,0x30,0x40,0x50};//目的主机MAC地址,例如: 00:10:20:30:40:50
     char adr[17]="";
     
    unsigned char packet[102];
    struct sockaddr_in addr;
    int sockfd, i,j, on = 1;
 for (int i=0 ;i<argc;i++){
         if (!strcmp(argv[i],"-mac")){
       sscanf(argv[i+1], "%02x:%02x:%02x:%02x:%02x:%02x", &mac[0], &mac[1], &mac[2], &mac[3], &mac[4], &mac[5]); 
                 printf("Mac is %s,mac is %02x%02x%02x%02x%02x%02x\n",argv[i+1],mac[0],mac[1],mac[2],mac[3],mac[4],mac[5]);
 
 
         }    
      if (!strcmp(argv[i],"-adr")){
        strcpy(adr,argv[i+1]);
                 printf("广播地址 is %s\n",adr);
 
 
         }            
 }    
 

  
         //构建magic packet
         for(i=0;i<6;i++)            
             packet[i] = 0xFF;    
             
         for(i=1;i<17;i++)
             for(j=0;j<6;j++)
                 packet[i*6+j] = mac[j];
         
         //UDP
         sockfd = socket(AF_INET, SOCK_DGRAM, 0);
         //广播
         setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST,&on, sizeof(on));
         if(sockfd < 0)
             exit(0);
                 
         memset((void*)&addr, 0, sizeof(addr));
         addr.sin_family = AF_INET;
         addr.sin_port = htons(10000);
         addr.sin_addr.s_addr = inet_addr(adr);//广播地址
         
         sendto(sockfd, packet, sizeof(packet), 0, (struct sockaddr *)&addr, sizeof(addr));
         close(sockfd);
             
         return 0;
 }

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/handavy/article/details/86570467

智能推荐

杭电acm——6376 度度熊剪纸条(2018百度之星初赛(A))-程序员宅基地

文章浏览阅读282次。题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=825&amp;pid=1003题目如下:1003任何时候的纸条(最初的纸条或者剪下来后的部分)都不能前后翻转度度熊剪纸条 Accepts: 488 Submissions: 5471 Time Limit: 2000/1000 MS (J...

聊一聊计算机中的进制转换(二进制 八进制 十进制 十六进制)以及进制的算术运算-日常学习笔记-程序员宅基地

文章浏览阅读435次,点赞5次,收藏11次。计算机进制转换 以及进制的加减乘除等算术运算

关于电销团队负责人如何挑选外呼系统?_电销团队用的什么电销系统-程序员宅基地

文章浏览阅读1k次。外呼系统包括了外呼功能模块和管理功能模块,旨在帮助企业提升外呼效率、外呼任务管理规范性以及最终的销售转化效率。大多数企业在搭建电销团队的时候都知道应该注意提高效率,以让销售人均产出更高。其实影响人均的产出的因素有很多,如果你是电销团队的负责人,要为呼叫中心选型 ,想知道外呼系统哪家公司做得好,都有哪些优势?那么这篇文章正好可以帮到你。一、外呼功能模块其一是自动外呼,自动外呼就是凭借系统对智能语音机器人的设置,批量对外呼叫客户号码,一边自动筛选客户号码、将拨打情况分类记录,清晰明确,便于跟进,一边将接通的_电销团队用的什么电销系统

易优cms添加发布内容教程_易优cms 投稿-程序员宅基地

文章浏览阅读1.8k次。易优cms添加发布内容快速添加内容只针对文章模型、产品模型、图片模型、下载模型等列表模型有效,其他模型内容编辑修改需要到栏目更改—“内容管理”里编辑;点击发布文档—快捷发布—选择需要添加的栏目,点击下一步即可进入对应内容编辑界面,事先需要先到“管理栏目”中添加或编辑好栏目;添加产品,文档,图集等内容,均包含常规信息、SEO设置、其他设置等基本设置,产品及图集有额外的产品属性及展示图片上传等操作选项..._易优cms 投稿

基于路由和VTI虚拟接口的IPSec实现_vti xfrm-程序员宅基地

文章浏览阅读3.5k次。以下根据strongswan代码中的testing/tests/route-based/rw-shared-vti/中的测试环境,来看一下基于路由和VTI接口的安全连接。拓扑结构如下:拓扑图中使用到的设备包括:虚拟主机carol和dave,以及虚拟网关moon。虚拟主机配置carol的配置文件:/etc/swanctl/swanctl.conf,内容如下。连接home中的字段vips设置为..._vti xfrm

2019年电赛D题《简易电路特性测试仪》全过程-程序员宅基地

文章浏览阅读2.5w次,点赞74次,收藏457次。2019年全国大学生电子设计大赛D题《简易电路特性测试仪》硬件部分及故障分析_简易电路特性测试仪

随便推点

群智能算法改进:基于萤火虫改进的麻雀算法-程序员宅基地

文章浏览阅读53次。该改进主要是在麻雀搜索后,利用萤火虫扰动对麻雀进行萤火虫扰动,将所有麻雀与最优麻雀利用萤火虫扰动方式,进行位置更新,提高其搜索性,扰动后的麻雀与扰动前的麻雀进行对比,如果更优则更新麻雀位置。鲁棒性高:采用多个麻雀个体进行搜索,并通过更新机制保持种群的多样性,使得算法具有较好的鲁棒性,对初始解的依赖度低,更适应不同类型的问题。易于实现和调节:麻雀搜索算法相对简单,易于实现和调节参数,无需复杂的运算和大量的计算资源,适用于中小规模问题的求解。群智能算法改进:基于萤火虫改进的麻雀算法。

prometheus自定义监控:监控接口的实时调用情况_prometheus 接口访问次数-程序员宅基地

文章浏览阅读7.7k次。当公共平台,我们需要实时监控各个业务系统对公共平台的调用情况时,可以在代码中自定义prometheus监控指标。如下图中,维度使用tags来标记,我定义了两个维度,一个是关联系统的id: syskey 。一个是访问的表 tablename。我需要按关联系统对每个表的调用情况统计: private void addCountMetric(String tableName) { Optional<String> opt = SecurityUtils.getCurr.._prometheus 接口访问次数

[硬件选型] 工业相机之参数和选型_工业相机选型-程序员宅基地

文章浏览阅读2.7w次,点赞42次,收藏243次。一、相机成像原理如图所示:注:1)当物距为无穷远时,像距等于焦距,成像在焦平面上;2)当物距为无穷无与两倍焦距之间时,像距在焦距与两倍焦距之间,成缩小的实像;3)当物距等于两倍焦距时,像距与物距相等,此时物像等大;4)当物距小于两倍焦距并大于焦距时,像距大于两倍焦距,成放大的实像;5)当物距等于焦距时,像距为无穷大,物上的光线经透镜后为平行光线,不成像; 6)当物距小于焦距时,像距..._工业相机选型

基于 Amazon Bedrock 的 Claude 3 体验:ChatGPT 已经 OUT 了吗?Claude 3 数据实测_通过amazon bedroc用claude-程序员宅基地

文章浏览阅读1.1k次,点赞16次,收藏17次。ChatGPT-4 的训练截止日期是 2021 年 9 月,那 Claude 3 呢?在 2024 年 3 月 5 日,Anthropic 在官网正式悄然发布了新一代 Claude 大模型——Claude 3 系列多模态大模型。在 Claude 3 正式发布后不久,亚马逊云科技 UserGroup 社区也迅速开放了基于 BedRock 的 Claude 3 体验。趁着这一次机会,正好对 Claude 3 进行一次简单的尝试。_通过amazon bedroc用claude

故障诊断 | CNN卷积神经网络故障诊断(Matlab)_卷积神经网络 实例 故障诊断-程序员宅基地

文章浏览阅读788次,点赞17次,收藏22次。随着工业 4.0 的到来,智能制造和自动化水平不断提高,设备故障诊断已成为工业生产中的关键技术之一。传统故障诊断方法主要依赖于专家经验和手工特征提取,存在主观性强、鲁棒性差等问题。近年来,深度学习技术在图像识别、自然语言处理等领域取得了突破性进展,为故障诊断提供了新的思路。卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,它通过卷积运算和池化操作提取图像中的特征,具有强大的特征学习能力和鲁棒性。_卷积神经网络 实例 故障诊断

第一个C++程序HelloWorld(Visual Studio 2017)_visual studio 第一次helloworld-程序员宅基地

文章浏览阅读1w次。在VS2017中新建一个C++项目:文件->新建->项目->Visual C++->Windows桌面->Windows控制台应用程序->名称和位置->确定。"stdafx.h"头文件全称“StandardApplication Framework Extensions”,指的是标准程序框架的扩展。以下摘自百度百科:预编译头文件通过编译stdafx.cpp生成,以工程名命名_visual studio 第一次helloworld