我正在为我们公司编写一个唤醒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地址问题.
有人知道这个问题吗?
建议赞赏:)
问题不在于代码,而在于机器.尝试调试硬件.
看,Wake on Lan是一个神奇的包.网卡获取它然后唤醒机器.
这就是你所做的一切.
然后机器必须正常唤醒,那里出了问题.你的魔法包中没有任何东西可以导致这种情况 - 我会从通常的嫌疑人(我想到的biod版本)开始.
如果可以确认机器已经启动(然后在启动期间停止),那么这不是编程问题.