C# 远程唤醒(远程开机)

C# 远程唤醒(远程开机)C#远程唤醒(远程开机)近日,小白要用到远程开机的功能,网上大多介绍的是MagicPacket的工具。实际上,此MagicPacket是AMD公司开发的,请在google.cn中搜索MagicPacketTechnology。原理上我们不用深入,实现上是发一个BroadCast包,包的内容包括以下数据就可以了。FFFFFFFFFFFF,6个FF是数据的开始,紧跟着16次

大家好,又见面了,我是你们的朋友全栈君。

C# 远程唤醒(远程开机)

近日,小白要用到远程开机的功能,网上大多介绍的是Magic Packet的工具。实际上,此Magic Packet是AMD公司开发的,请在google.cn中搜索Magic Packet Technology。原理上我们不用深入,实现上是发一个BroadCast包,包的内容包括以下数据就可以了。FF FF FF FF FF FF,6个FF是数据的开始,紧跟着16次MAC地址就可以了。比如MAC地址是11 22 33 44 55 66,那么数据就是FF FF FF FF FF FF 11 22 33 44 55 66 11 22 33 44 55 66 11 22 33 44 55 66……..(11 22 33 44 55 66重复16次)。这个数据在包的任何位置都可以,或者包仅为这个数据。然后网播出去就可以了。简单的实现如下:
 

 1  private   static   void  WakeUp( byte [] mac) {


 2              UdpClient client  =   new  UdpClient();

 3              client.Connect(IPAddress.Broadcast,  30000 );

 4              

 5               byte [] packet  =   new   byte [ 17   *   6 ];

 6 

 7               for  ( int  i  =   0 ; i  <   6 ; i ++ )

 8                  packet[i]  =   0xFF ;

 9 

10               for  ( int  i  =   1 ; i  <=   16 ; i ++ )

11                   for  ( int  j  =   0 ; j  <   6 ; j ++ )

12                      packet[i  *   6   +  j]  =  mac[j];

13 

14               int  result  =  client.Send(packet, packet.Length);

15          }

PS:跨路由器的问题(不是公网IP问题)。如果机器A和机器B处于同一个网段内,用client.Connect(IPAddress.Broadcast,port)是可以的,如果A和B不是处于同一个网段内,那么就要用网段内的广播地址,比如A机器是192.168.1.2,B机器IP地址是192.168.100.3,用A远程唤醒B,就要用B网段的广播地址,192.168.100.255。
IPAddress ip = new IPAddress(new byte[]{192,168,100,255});
client.Connect(ip,port)。原理可以参考网络协议。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141987.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月24日 下午6:00
下一篇 2022年5月24日 下午6:00


相关推荐

  • 什么是SOAP?SOAP有什么用?什么时候会用到SOAP?[通俗易懂]

    什么是SOAP?SOAP有什么用?什么时候会用到SOAP?[通俗易懂]什么是SOAPSOAP(SimpleObjectAccessProtocol)一般指简单对象访问协议,简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语

    2022年7月3日
    37
  • AspNETPager的用法

    AspNETPager的用法nbsp 先下载 4 3 版 然后安装问题 1 在 vs net2005 中 该控件并不能自动添加到工具面板中 需要手动添加项 选定 AspNetPager dll 即可 2 在 codeBehind 的 cs 文件中 要 usingWuqi Webdiyer 3 写好 ChangePage 事件后 要与 aspnetpager 控件相关联以下是一段示例代码 前台 default aspx nbsp

    2026年3月16日
    3
  • pytorch转tensorflow_语义分割样本不均衡

    pytorch转tensorflow_语义分割样本不均衡憨批的语义分割重制版7——TF2搭建自己的Unet语义分割平台注意事项学习前言什么是Unet模型代码下载Unet实现思路一、预测部分1、主干网络介绍2、加强特征提取结构3、利用特征获得预测结果二、训练部分1、训练文件详解2、LOSS解析训练自己的Unet模型注意事项这是重新构建了的Unet语义分割网络,主要是文件框架上的构建,还有代码的实现,和之前的语义分割网络相比,更加完整也更清晰一些。建议还是学习这个版本的Unet。学习前言还是快乐的pytorch人。什么是Unet模型Unet是一个优秀

    2022年8月21日
    10
  • ★ Android基础篇 Android 数据存储与性能

    ★ Android基础篇 Android 数据存储与性能

    2021年3月12日
    163
  • linux修改文件没有权限设置,Linux下修改文件权限(所有权)

    linux修改文件没有权限设置,Linux下修改文件权限(所有权)Linux与Unix是多用户操作系统,所以文件的权限与所有权的实现就显得很有必要;每个文件主要与三组权限打交道,分别是用户(user),用户组(group),其他用户(other)用户(u)是文件的所有者,通常有所有的文件的操作权限用户组(g)是多个用户的集合,可能有文件的部分访问权,相当于各用户之间的共享文件其他(o)是指文件所有者和用户组成员之外的任何人使用ls-l可以显示出当前目录下的文件…

    2025年10月31日
    6
  • 在图形管理工具mysql workbench窗口_sqlite可视化工具

    在图形管理工具mysql workbench窗口_sqlite可视化工具可视化数据库管理工具MySQLWorkbench的安装配置及使用MySQLWorkbench是为数据库管理员、程序开发者和系统规划师提供可视化的Sql开发、数据库建模、以及数据库管理功能的工具。1.下载官网下载地址:https://dev.mysql.com/downloads/workbench/这里下载的版本是:community,为社区版,非商用,可以免费使用。2.安装安装过程就不多说了,双击安装,根据提示进行,非常简单。3.打开安装完成后,双击桌面图标即可打开,界

    2022年8月22日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号