当前位置: 首页> 游戏> 评测 > (附源码)c#+winform实现远程开机(广域网可用)

(附源码)c#+winform实现远程开机(广域网可用)

时间:2025/7/13 12:54:54来源:https://blog.csdn.net/weixin_72139050/article/details/140293678 浏览次数:0次

实现逻辑

        利用UDP协议发送特定格式的魔术包,以远程唤醒具有特定MAC地址的目标计算机。目标计算机的BIOS和网络配置需要支持Wake-on-LAN(WOL)功能,并且需要在目标计算机上配置正确的网络唤醒设置。

源码在最后

准备工作

  1. 进入Bios,找到高级设置----》然后找到类似的电源管理、或者设备唤醒的字眼,各个主板所在的位置也不同,然后找到PCI-E设备唤醒,把这个设置为启用,然后保存,等待几秒电脑启动。
  2. 打开电脑的设备管理器,按照图示操作

        

3.win+r打开cmd 输入ipconfig/all。找到物理地址,复制出来等会要用。

4.打开允许远程协助,位置:打开控制面板-----系统和安全

如图所示按照此设置就OK了

源代码

private bool SendWakeOnLanPacket(string macAddress, string ipAddress, int port){try{// 解析MAC地址byte[] macBytes = ParseMacAddress(macAddress);// 创建魔术包byte[] packet = new byte[102];for (int i = 0; i < 6; i++){packet[i] = 0xFF;}for (int i = 1; i <= 16; i++){Buffer.BlockCopy(macBytes, 0, packet, i * 6, 6);}// 创建UDP客户端UdpClient client = new UdpClient();client.Connect(IPAddress.Parse(ipAddress), port);client.Send(packet, packet.Length);client.Close();return true;}catch (Exception ex){MessageBox.Show("发送魔术包时出错: " + ex.Message);return false;}}private byte[] ParseMacAddress(string macAddress){string[] hex = macAddress.Split(':');if (hex.Length != 6){throw new ArgumentException("无效的MAC地址格式。");}byte[] bytes = new byte[6];for (int i = 0; i < 6; i++){bytes[i] = Convert.ToByte(hex[i], 16);}return bytes;}private void button1_Click(object sender, EventArgs e){string macAddress = txtMacAddress.Text;string ipAddress = "192.168.1.20";int port = 30000;if (SendWakeOnLanPacket(macAddress, ipAddress, port)){MessageBox.Show("魔术包发送成功,等待目标电脑唤醒。此过程需要1-2分钟,请查看你的向日葵或者todesk是否显示在线!");}else{MessageBox.Show("魔术包发送失败,请检查输入和网络配置。");}}

此时你就可以实现在局域网内部开启电脑。

广域网远程

假设你的A电脑要远程开机B电脑,B电脑在局域网内,此时需要设置B电脑的路由器的端口转发,

使用场景:晚上突然需要加班,我在家用家里的电脑远程开启公司内的电脑,那么此时就是广域网。符合上述概念。

路由器设置:进入到公司B电脑所在路由器的管理界面,找到高级设置,有个叫端口转发或者虚拟服务器的页签,千万记住、不是端口触发,端口触发设置不了局域网内部的ip地址。

我的路由器叫虚拟服务器,进去之后点击新增,应该会有外部端口、内部端口、ip地址等等,类似于这样

服务名称随便起一个,外部端口范围随便写,比如说4666-4666

内部端口4666-4666、再写入你的B电脑的ip地址,然后就可以实现在家远程自己的电脑啦。

关键字:(附源码)c#+winform实现远程开机(广域网可用)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: