远程唤醒代码

c# 远程网络唤醒电脑(电脑远程开机+内网MAC和IP扫描)(附带源码+主板和Windows开启详细说明+外网远程唤醒方案) 1、人在公司坐,昨晚写的文档放在家中电脑忘记Copy了,想要访问家中电脑拿到文档。2、家中或公司中局域网内有某台电脑(或服务器)要开机,或者批量一键打开局域网内某些电脑。 阅读详情
网络唤醒程序代码
    发布时间:2005-01-06 11:15:20    

I 根据网络唤醒数据包编写的网络唤醒程序,只实现了基本的代码部分,还不能发送密码。
for linux 的,要有LIBNET库的支持哦。

#include <unistd.h>
#include <stdio.h>
#include <libnet.h>
main()
{

u_char *packet;
u_short packet_size=0;
u_char enet_dst[6]={0x00,0x11,0x22,0x33,0x44,0x55};
u_char enet_src[6]={0x00,0x40,0x05,0x47,0x23,0xfb};
u_char *payload;
int payload_size=0;
char *dev="eth0";
char ebuf[LIBNET_ERRBUF_SIZE];
struct libnet_link_int *s;
int i,c;

payload=(u_char *)malloc(102);

packet_size=LIBNET_ETH_H+102;

if((libnet_init_packet(packet_size,&packet))==-1)
{ }
if((s=libnet_open_link_interface(dev,ebuf))==NULL)
{ }

memset(payload,0xff,6);
payload_size+=6;

for(i=0;i<16;i++){
memcpy(payload+payload_size,enet_dst,6);
payload_size+=6;
}

libnet_build_ethernet(enet_dst,
enet_src,
0x842,
payload,
payload_size,
packet);
for(i=0;i<packet_size;i++)
printf("%2.2x ",packet[i]);



c=libnet_write_link_layer(s,dev,packet,packet_size);

printf("/nsend size is: %d",c);
libnet_destroy_packet(&packet);
}








//IPAddress: 除去网络号后的IP段全部补255  ,如 210.45.234.255
 // MacAddress :  6个字节的字符型数组,每块网卡都有一个物理地址,在Window98中可以用
 //               winipcfg.exe 查询出来。

void TWakeUpOnLanForm:: WakeRemoteComputer(AnsiString IPAddress,unsigned char * MacAddress)
{
        unsigned char SendBuf[102];
        for( int i = 0; i < 102; i ++)
        {
                SendBuf[i] = (i < 6) ? 0xFF : MacAddress[i%6];
        }
        TMemoryStream * MemoryStream = new TMemoryStream();

        MemoryStream -> Clear();
        MemoryStream -> Write(SendBuf,102);
        NMUDP1 -> RemoteHost = IPAddress;   //除去网络号后的IP段全部补255
                                            //如 210.45.234.255
        NMUDP1 -> SendStream(MemoryStream);
        delete MemoryStream;

}















unit WakeUp;
    
    interface
    uses
     Windows, Messages, SysUtils, Dialogs, WinSock;
    
    function CheckWinSockResult(ResultCode: Integer; const FuncName: string): Integer;
    procedure OpenComputer(SAddr: string);
    
    const
     LEN_PHYSADDR = 6;
    
    implementation
    
    {$R *.DFM}
    function CheckWinSockResult(ResultCode: Integer; const FuncName: string): Integer;
    begin
     if ResultCode <> 0 then
     begin
     Result := WSAGetLastError;
     ShowMessage(Format(#13#10'Windows socket函数''%s''错误: %s (%d)',[FuncName,SysErrorMessage(Result), Result]));
     Abort;
     end else Result := 0;
    end;
    
    procedure OpenComputer(SAddr: string); //00-B0-D0-15-86-B4
    var
     WSAData: TWSAData;
     MSocket: TSocket;
     SockAddrIn: TSockAddrIn;
     RetVal, OptVal, i: Integer;
     MacAddr: array[0..5] of Byte;
     MagicData: array[0..101] of Byte;
     Position: Longint;
    begin
     try
     if Length(SAddr) <> 17 then Abort;
     for i := 1 to Length(SAddr) do
     if i in [3, 6, 9, 12, 15] then
     if SAddr[i] <> '-' then Abort;
     for i := 0 to High(MacAddr) do
     begin
     if Pos('-', SAddr) > 0 then
     MacAddr[i] := StrToInt(HexDisplayPrefix + Copy(SAddr, 1, Pos('-', SAddr) - 1))
     else
     MacAddr[i] := StrToInt(HexDisplayPrefix + SAddr);
     Delete(SAddr, 1, Pos('-', SAddr));
     end;
     except
     ShowMessage(#13#10'网卡地址错误.');
     exit;
     end;
     try
     CheckWinSockResult(WSAStartup($0101, WSAData), 'WSAStartup');
     MSocket := socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
     if MSocket = INVALID_SOCKET then CheckWinSockResult(MSocket, 'socket');
     OptVal := 1;
     CheckWinSockResult(setsockopt(MSocket, SOL_SOCKET, SO_BROADCAST,
     PChar(@OptVal), SizeOf(OptVal)), 'setsockopt');
     FillChar(MagicData, SizeOf(MagicData), $FF);
     Position := LEN_PHYSADDR;
     while Position < SizeOf(MagicData) do
     begin
     Move(MacAddr, Pointer(Longint(@MagicData) + Position)^, LEN_PHYSADDR);
     Inc(Position, LEN_PHYSADDR);
     end;
     SockAddrIn.sin_family := AF_INET;
     SockAddrIn.sin_addr.S_addr := Longint(INADDR_BROADCAST);
     RetVal := sendto(MSocket, MagicData, SizeOf(MagicData), 0, SockAddrIn, SizeOf(SockAddrIn));
     if RetVal = SOCKET_ERROR then CheckWinSockResult(RetVal, 'sendto');
     CheckWinSockResult(closesocket(MSocket), 'closesocket');
     CheckWinSockResult(WSACleanup, 'WSACleanup');
     except
     exit;
     end;
    end;
    
    end.
    

Python实现WOL远程唤醒:保姆级教程(含BIOS设置+代码解析) 本文详细介绍了如何使用Python实现WOL(Wake-on-LAN)远程唤醒技术,包括BIOS设置、硬件准备和代码实现。通过保姆级教程,读者可以掌握从局域网到跨网络的WOL解决方案,适用于远程办公和服务器管理等场景。 阅读详情

相关推荐

Delphi 网络远程唤醒

基于Delphi的网络远程唤醒代码,网络上的代码错误很多,这是修改好的可执行源代码,经过测试,能正常唤醒支持网络唤醒的计算机。该代码非常实用。 procedure WakeUp(SAddr: string); var WSAData: TWSAData; MSocket: TSocket; SockAddrIn: TSockAddrIn; RetVal, OptVal, i: Integer; MacAddr: array[0..5] of Byte; MagicData: array[0..101] of Byte; Position: Longint; begin try if Length(SAddr) 17 then Abort; for i := 1 to Length(SAddr) do if i in [3, 6, 9, 12, 15] then if SAddr[i] '-' then Abort; for i := 0 to High(MacAddr) do begin if Pos('-', SAddr) > 0 then MacAddr[i] := StrToInt(HexDisplayPrefix + Copy(SAddr, 1, Pos('-', SAddr) - 1)) else MacAddr[i] := StrToInt(HexDisplayPrefix + SAddr); //Delete 是删除一个 字符串中的 某部分字符 //Delete(str, index, count) // str, //被删除的字符串 // index, //从第几个字符开始删除 // count //删除几个 //Delete(S, 2, 2); 就是从S中的第二个开始删除,删除2个字符即2、3. //Pos(a,b); 取出子串a,在父串b中第一次出现的位置; //Pos'b','abcd'); 返回结果是:2 Delete(SAddr, 1, Pos('-', SAddr)); end; except //application.MessageBox('网卡地址错误','警告',MB_ICONWARING); 错误:MB_ICONWARING application.MessageBox('网卡地址错误', '警告', MB_ICONWARNING); exit; end; try CheckWinSockResult(WSAStartup($0101, WSAData), 'WSAStartup'); MSocket := socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); if MSocket = INVALID_SOCKET then CheckWinSockResult(MSocket, 'socket'); OptVal := 1; CheckWinSockResult(setsockopt(MSocket, SOL_SOCKET, SO_BROADCAST, PChar(@OptVal), SizeOf(OptVal)), 'setsockopt'); FillChar(MagicData, SizeOf(MagicData), $FF); Position := LEN_PHYSADDR; while Position < SizeOf(MagicData) do begin Move(MacAddr, Pointer(Longint(@MagicData) + Position)^, LEN_PHYSADDR); Inc(Position, LEN_PHYSADDR); end; SockAddrIn.sin_family := AF_INET; SockAddrIn.sin_addr.S_addr := Longint(INADDR_BROADCAST); RetVal := sendto(MSocket, MagicData, SizeOf(MagicData), 0, SockAddrIn, SizeOf(SockAddrIn)); if RetVal = SOCKET_ERROR then CheckWinSockResult(RetVal, 'sendto'); CheckWinSockResult(closesocket(MSocket), 'closesocket'); CheckWinSockResult(WSACleanup, 'WSACleanup'); except exit; end; end;

计算机网络唤醒技术说明与实现

网络唤醒是一种远程唤醒计算机的技术,也称为Wake-on-LAN (WOL)。它可以通过局域网内的其他设备向计算机发送唤醒信号,使得计算机从睡眠状态或者关机状态中被唤醒。网络唤醒通常需要满足以下条件:支持Wake-on-LAN功能的网卡:计算机的网卡需要支持Wake-on-LAN功能,这意味着网卡可以在待机状态下监听网络信号,并在接收到唤醒信号时将计算机唤醒。启用Wake-on-LAN功能:在计算机的BIOS设置中,需要启用Wake-on-LAN功能,以便于网卡在待机状态下仍能够监听网络信号。

https://ligo100.cn 小何博客欢迎访问。 5269

网络唤醒代码-实现WOL(wake on lan)

该软件实现局域网内对目标PC的网络唤醒。在软件工作前需要设定被唤醒PC的MAC地址。

网络唤醒多种语言实现

网络唤醒的原理原来是这样的,GET! 前情回顾,亿元程序员为我们介绍了网络唤醒的原理及其实现。下面主要分享一下多种语言版本的网络化唤醒实现。 网络唤醒多种语言实现 1.小程序 //构建魔术包 MakeMagicPack: function(mac) {   mac = mac.trim();   //正则校验MAC   var rep = new RegExp("[^0-9a-zA-Z]+",'ig')   mac = mac.replace(rep,"") &n

lsw_Cs的博客 1290

网络唤醒的源码

在vs2010下网络唤醒的源码,主要可以看看网络唤醒的报文格式,

远程唤醒计算机C#源码

使用Visual Studio 2005 编写的小东西,可以远程唤醒指定的计算机,需要机器支持,也就是要在机子上设置一下,计算机-》设备管理器-》网卡驱动属性

网络唤醒*Wake-on-LAN* (*WoL* or *WOL*) 设置方法

WOL是一个可以通过网卡接收到的网络消息使计算机从休眠中唤醒的技术,这个特殊的消息称为魔术包(magic packet)。为了使用WOL,你的计算机系统软件及硬件都必须支持WOL特性才可以,你的计算机必须继续连接电源并且不能断开网络连接。启动网卡对魔术包及PME的支持。 在桌面左下角右键单击,点击设备管理器 选择网络适配器,在需要唤醒的网卡上面右键单击,选择属性 因硬件、网卡驱动、系统版本差异,具体的呈现内容可能存在差异,需要结合具体情况修改在桌面左下角右键单击,点击电源选项 点击其它电源设置 点击

分享 1万+

[VisionPro] CogPMAlignTool 工具详解

[VisionPro] [CogPMAlignTool] [模板匹配]

weixin_43163656的博客 1万+

利用C语言实现wol网络远程唤醒

Wake-On-LAN的实现,主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet)。MagicPacket格式虽然只是AMD公司开发推广的技术,并非世界公认的标准,但是仍然受到很多网卡制造商的支持,因此许多具有网络唤醒功能的网卡都能与之兼容。按照WOL协议规定,在电脑处于关机而网卡供电状态下,从网络上接收到WOL魔数包后会自动加电开机,这种方式能够很方便应用在需要进行远程管理的环境中。

博客 63万+

蓝桥杯单片机学习13——NE555方波发生器&频率测量

NE555详解、引脚图介绍、原理图及工作原理讲解、方波产生的原理、定时器测量频率的原理及使用方法、代码实现

weixin_67907028的博客 1万+

FEniCS学习笔记01:centos7下通过conda安装FEniCSx0.7

2023年版本的Fenicsx0.7,官网推荐使用conda命令安装集成好的Python包,因此我们的安装思路是先安装Anaconda,再按照官网步骤安装Fenics。

huahua_xiao的博客 5056

远程唤醒源代码

忘记出处了,留着自己用的。 void TWakeUpOnLanForm:: WakeRemoteComputer(AnsiString IPAddress,unsigned char * MacAddress){        unsigned char SendBuf[102];        for( int i = 0; i         {                SendBuf[

不亦快斋 2448

使用curl命令出现fatal: unable to access ‘https://github.com/nvm-sh/nvm.git/‘: Encountered end of file的解决方案

本文主要介绍了使用curl命令出现fatal: unable to access ‘https://github.com/nvm-sh/nvm.git/’: Encountered end of file的解决方案,希望能对使用curl命令的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

Qt实现远程唤醒(远程开机)代码仓库介绍

Qt实现远程唤醒(远程开机)代码仓库介绍 去发现同类优质开源项目:https://gitcode.com/ 此仓库包含了一个使用Qt框架开发的远程唤醒功能代码。该功能通过封装目标计算机的MAC地址到魔术封包中,利用UDP通讯协议发送,以实现远程开机的目的。 功能特点 远程唤醒:通过发送特定的网络消息,远程启动关机状态的计算机。 简单易用:只需输入目标计算机的IP地址和MAC地址即可。 Qt框架:...

gitblog_06748的博客 442

使用 Simulink + Simscape Electrical 对基于VSG控制的背靠背变流器整流侧进行建模与仿真

本文介绍了基于Simulink的直驱风电系统背靠背变流器整流侧虚拟同步发电机(VSG)建模方法。首先阐述了直驱风电系统结构和VSG控制的作用,然后详细指导了模型搭建过程:从创建项目、添加PMSG和变流器模块,到搭建主电路拓扑和实现VSG控制逻辑。重点说明了VSG控制器如何模拟传统同步发电机的特性,并提供了仿真设置和结果分析方法。该模型可用于研究风电系统在不同工况下的响应特性,为新能源发电系统设计提供重要参考。

amy_mhd的博客 180

【38】OpenCV C++实战篇——基于多项式插值的亚像素边缘定位算法

亚像素边缘定位算法实现 本文介绍了一种基于多项式插值的亚像素边缘定位算法,用于提高图像边缘检测的精度。文章首先分析了传统像素级边缘检测方法(如Canny、Sobel)的局限性,指出其在测量应用中的精度不足问题。 算法核心 梯度计算:使用8个方向模板进行卷积运算生成梯度图像 亚像素定位:采用多项式插值方法改进边缘定位精度 实现步骤: 生成8个方向的卷积模板(0°、45°、90°等) 利用filter2D函数计算各方向梯度 通过归一化处理显示梯度图像 代码特点 提供完整的C++实现代码 包含模板生成、梯度计算和

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1099

远程唤醒源代码 (转)

远程唤醒源代码 (转)[@more@]//IPAddress: 除去网络号后的IP段全部补255 ,如 210.45.234.255// MacAddress : 6个字节的字符型数组,每块网卡都有一个物理地址,在Wind...

csd3176的博客 232

第3.2.1章 Eigen代码实战:四元数赋值用法总结及与变换矩阵转换

Eigen库中四元数(Quaternion)的赋值方法解析:Quaterniond和Quaternion<double>本质相同,但Quaterniond是更简洁的别名。主要赋值方式包括直接构造(w,x,y,z分量、旋转矩阵或轴角)、赋值运算符和成员函数赋值。使用时需注意参数顺序、归一化处理和头文件包含,常见错误包括模板参数缺失和构造顺序错误。四元数广泛应用于旋转矩阵转换、姿态组合等场景,合理选择赋值方式能提高代码可读性和正确性。

行知SLAM 587

Qt实现远程唤醒远程开机代码仓库介绍:通过Qt框架实现远程启动电脑

Qt实现远程唤醒远程开机代码仓库介绍:通过Qt框架实现远程启动电脑 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 随着科技的不断发展,远程控制技术已经深入到我们生活的方方面面。今天要为大家介绍的是一个开源项目——Qt实现远程唤醒(远程开机)代码仓库。该项目通过Qt框架,实现了通过发送网络消息来远程启动关机状态的计算机,极大地提升了远程工作的便捷性。 项目技术分析 Qt...

gitblog_06792的博客 725

微信小程序 - 最新实现人脸识别认证功能,使用官方微信小程序人脸识别身份验证接口及常见的人脸核验、用户实名认证、身份证件与人脸是否匹配、是否活体、领取业务人脸认证等各种示例(验证活体人脸是否匹配源码)

微信小程序中实现人脸识别认证,微信小程序人脸识别认证-微信开放接口,如何为微信小程序添加人脸识别和身份验证功能,如何为微信小程序集成人脸识别与身份验证,微信人脸识别实名认证集成指南,识别失败,人脸识别接口怎么调用,前后端完整示例代码demo,微信小程序基于小程序实现人脸识别对比,人脸识别报错,微信人脸核身接口能力,微信小程序实名认证 人脸核验 人脸识别,微信小程序实名认证与人脸核身接口全解析,微信小程序-人脸识别+输出人脸匹配信息,微信小程序实名认证人脸核验人脸识别,微信小程序实名认证:wx.startFa

🏆 前端领域优质创作者 3274

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# 远程网络唤醒介绍及代码

一.定义   网络唤醒:唤醒休眠状态下的计算机,而不是已关机的计算机。   优势:可通过定时功能实现自动唤醒计算机,减少人力使用。   实现方法:通过被唤醒机的MAC地址进行广播发送请求,唤醒计算机。 二.硬件设置   1.Win7系统下设置如下图,计算机-》设备管理器-》网卡驱动属性 2.在BIOS设置允许网络唤醒   该功能设置介绍起来太墨迹,各位自行百度吧,很...

weixin_30718391的博客 468

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C#实战:如何用5行代码实现局域网电脑远程唤醒(附主板BIOS避坑指南)

本文详细介绍了如何使用C#通过5行核心代码实现局域网电脑远程唤醒(WOL)。文章深入解析了魔术包发送原理,并提供了微星、技嘉、华硕等主流主板BIOS中远程网络唤醒功能的详细设置路径与避坑指南,确保功能成功启用。

yog99的博客 417

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

PHP代码用UDP方式远程唤醒电脑让计算机开机

port = 9;// 创建一个UDP协议的socket。// 关闭socket连接。

2401_85831298的博客 515

php 远程唤醒电脑 php源码远程唤醒电脑 远程开机

1.局域网扫描ip和网卡地址 2.udp测试工具 向udp服务端发送唤醒包 3.udp测试工具接收到的包 4.手机app pingTools 工具里的网络唤醒工具,发送唤醒包 5.接收到手机app发送过来的包 6.对比包的内容是否一致。 7.唤醒包内容是什么? 看看这个解释:https://blog.youkuaiyun.com/u0133638...

jxyk2007的专栏 2414

最强组网神器linker我让家里的系统远程更新了公司远程唤醒的插座代码

跨网更新搞通了 真爽,最强组网linker ,比wireguard zerotier好用直接用家里网络更新公司的插座代码 ,插座代码连接了mqtt方便家里远程唤醒办公的。

情随事迁个人博客 238
上一篇: XYZ DOWN-电子书
下一篇: 小议Windows NT/2000分页机制(http://webcrazy.yeah.net)
freexploit
博客等级 码龄22年 315粉丝 778原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值