C# 关于远程网络开机示例代码及教程(局域网物理地址开机)

本文详细介绍了如何利用Windows系统和MagicPacket技术在局域网中通过发送特定数据包实现对另一台计算机的远程唤醒,包括获取目标电脑的MAC地址、BIOS和网卡设置步骤,以及提供了一个示例代码。提醒读者注意工控机可能存在的适用性限制和跨网段操作的后续计划。
摘要由CSDN通过智能技术生成

远程唤醒

远程开机Wake onLAN(WOL),俗称远程唤醒,是现在很多网卡都支持的功能。而远程唤醒的实现,主要是向目标主机发送特殊格式的数据包,是AMD公司制作的MagicPacket这套软件以生成网络唤醒所需要的特殊数据包,俗称魔术包(Magic Packet)。MagicPacket格式虽然只是AMD公司开发推广的技术,并非世界公认的标准,但是仍然受到很多网卡制造商的支持,因此许多具有网络唤醒功能的网卡都能与之兼容。

原理上我们不用深入,实现上是发一个BroadCast包,包的内容包括以下数据就可以了。FF FF FF FF FF FF,6个FF是数据的开始,紧跟着16次MAC地址就可以了。

有了以上的基础知识,就要开始我们的项目了。用计算机(pc-A)唤醒局域网中的计算机(pc-B)

获取pc-B的Mac地址

win键+R键  输入CMD弹出命令行
通过命令行输入ipconfig/all可以得到pc-B的MAC地址 

设置pc-B

首先需要进行BIOS和网卡设置,启动计算机,进入BIOS参数设置。选择电源管理设置“Power Management Setup”选项,将“Wake up on LAN”项和“Wake on PCI Card”项均设置为“Enable”,启用该计算机的远程唤醒功能。(一般电脑有的都是默认开启的)

设置网卡

打开设备管理器找到网络适配器

选择自己的网卡,右击->属性->高级

将唤醒魔包和魔术封包唤醒启用,并切换到电源管理选项中,如图选择。

win11电脑设置部分可能略有不同请根据实际情况更改。

远程开机代码

 public void borad_Start()
      {
          byte[] mac = new byte[6];

          //MAC地址分配到mac数组中
          mac[0] = Convert.ToByte("00", 16);
          mac[1] = Convert.ToByte("AC", 16);
          mac[2] = Convert.ToByte("00", 16);
          mac[3] = Convert.ToByte("B8", 16);
          mac[4] = Convert.ToByte("85", 16);
          mac[5] = Convert.ToByte("00", 16);
          WakeUp(mac);
      }


  public static void WakeUp(byte[] mac)
  {
      try
      {
          UdpClient client = new UdpClient();
          client.Connect(IPAddress.Broadcast, 9090);

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

          for (int i = 0; i < 6; i++)
              packet[i] = 0xFF;

          for (int i = 1; i <= 16; i++)
              for (int j = 0; j < 6; j++)
                  packet[i * 6 + j] = mac[j];

          int result = client.Send(packet, packet.Length);
      }
      catch (Exception)
      {
      }
  }

只需要更改borad_Start()函数中物理地址MAC ,然后调用borad_Start函数即可远程开机。

另需注意,研华工控机可能不适用于此方法(部分电脑不适用于),原因是电源设置问题可能稍有偏差,代码部分没问题!!!

以上及是我对远程开机的示例代码,欢迎大家交流学习!!!

本功能只适用于局域网,至于跨网段等未尝试,等后期测试过后,再做更新!!!!

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值