C#wake on lan程序不会唤醒每个客户端

 书友37715123 发布于 2023-01-09 15:36

我正在为我们公司编写一个唤醒LAN程序.有大约 我们公司有40-50台机器,应该唤醒每个客户.要唤醒客户端,我使用以下代码:

private static void WakeUp(string macAddress)
{
    WOLClass client = new WOLClass();

    client.Connect(new IPAddress(0xffffffff), 0x2fff);
    client.SetClientToBroadcastMode();

    int counter = 0;

    byte[] bytes = new byte[1024];

    for (int e = 0; e < 6; e++)
    {
        bytes[counter++] = 0xFF;
    }

    for (int e = 0; e < 16; e++)
    {
        int i = 0;

        for (int w = 0; w < 6; w++)
        {
            bytes[counter++] = byte.Parse(macAddress.Substring(i, 2), NumberStyles.HexNumber);
            i += 2;
        }
    }

    int returnedValue = client.Send(bytes, 1024);
}

public class WOLClass : UdpClient
{
    public WOLClass()
        : base()
    {

    }

    public void SetClientToBroadcastMode()
    {
        if (this.Active)
        {
            this.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 0);
        }
    }
}

button_Click事件上我只是调用方法WakeUp(macAddress)

大多数客户正常醒来.但在一些客户端,计算机只是停止启动并停留在左下角有一点下划线的黑色显示器中.我已经为每个客户端检查了macAddress 3次(ipconfig)以及VS2012的调试模式.它总是完全相同和正确的.所以它不能成为mac地址问题.

有人知道这个问题吗?

建议赞赏:)

1 个回答
  • 问题不在于代码,而在于机器.尝试调试硬件.

    看,Wake on Lan是一个神奇的包.网卡获取它然后唤醒机器.

    这就是你所做的一切.

    然后机器必须正常唤醒,那里出了问题.你的魔法包中没有任何东西可以导致这种情况 - 我会从通常的嫌疑人(我想到的biod版本)开始.

    如果可以确认机器已经启动(然后在启动期间停止),那么这不是编程问题.

    2023-01-09 15:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有