LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#通过网卡地址唤醒局域网内的其他电脑,此电脑已经设置好支持局域网唤醒命令

admin
2025年6月20日 22:38 本文热度 72

以下是使用C#实现局域网唤醒(Wake-on-LAN)的代码示例。该代码通过发送魔术包(Magic Packet)到目标计算机的MAC地址实现唤醒功能:

using System;

using System.Net;

using System.Net.NetworkInformation;

using System.Net.Sockets;

using System.Text;


public class WakeOnLan

{

    public static void WakeUp(string macAddress, string broadcastIp = "255.255.255.255", int port = 4343)

    {

        // 验证MAC地址格式并转换为字节数组

        byte[] macBytes = ParseMacAddress(macAddress);

        

        // 构建魔术包(6x0xFF + 16xMAC地址)

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

        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发送到广播地址

        using (UdpClient client = new UdpClient())

        {

            client.EnableBroadcast = true;

            IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(broadcastIp), port);

            client.Send(packet, packet.Length, endpoint);

        }

    }


    private static byte[] ParseMacAddress(string macAddress)

    {

        // 移除分隔符

        string cleanMac = macAddress

            .Replace(":", "")

            .Replace("-", "")

            .Replace(".", "")

            .Trim();


        // 验证长度(12个字符)

        if (cleanMac.Length != 12)

            throw new ArgumentException("Invalid MAC address format");


        // 转换为字节数组

        byte[] bytes = new byte[6];

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

        {

            string byteStr = cleanMac.Substring(i * 2, 2);

            bytes[i] = Convert.ToByte(byteStr, 16);

        }

        return bytes;

    }

}


// 使用示例

public class Program

{

    public static void Main()

    {

        try

        {

            // 替换为目标电脑的MAC地址

            string macAddress = "01-23-45-67-89-AB"; 

            

            // 可选:指定正确的广播地址(如 "192.168.1.255")

            WakeOnLan.WakeUp(macAddress);

            

            Console.WriteLine("唤醒信号已发送");

        }

        catch (Exception ex)

        {

            Console.WriteLine($"错误: {ex.Message}");

        }

    }

}

使用说明:

1、MAC地址格式

  • 支持带分隔符(01:23:45:67:89:AB01-23-45-67-89-AB)或无分隔符(0123456789AB

  • 示例:WakeOnLan.WakeUp("01:23:45:67:89:AB");

2、广播地址

  • 默认使用全局广播地址 255.255.255.255

  • 如无效可尝试子网广播地址(如 192.168.1.255):

WakeOnLan.WakeUp(macAddress, "192.168.1.255");

3、目标计算机要求

  • BIOS/UEFI中启用Wake-on-LAN(通常位于电源管理设置)

  • 操作系统网卡设置中启用魔术包唤醒

  • 关闭节能模式(允许网卡在关机时供电)

常见问题处理:

1、防火墙/路由器阻止广播包

  • 临时禁用防火墙测试

  • 路由器需允许局域网内广播

2、物理限制

  • 目标机必须通过网线连接(WiFi唤醒通常不可靠)

  • 需确保交换机支持WOL广播

​3、权限问题

  • 以管理员身份运行程序(部分系统需提升权限)

注意:此代码需在局域网内执行,互联网唤醒需配合路由器端口转发或专用服务。

附上一个成品软件:

附件:wakeonlangui.zip


该文章在 2025/6/20 22:41:31 编辑过

全部评论1

admin
2025年6月20日 22:39
 实际测试,成功实现唤醒局域网内指定电脑开机。
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved