0

我想检测一下 Wake On Lan 是否可行。

在我的路由器(Tomato 固件)上有一张包含信息的表格 - 当显示设备“活动(在 ARP 中)”时 - 可以通过 WOL(离线 linux pc)打开此设备。

我想知道它是通过仅路由器功能实现的,还是我可以在 C# 或 C 中实现?函数 SendArp 可以检测 MAC 地址并执行“arping”,但这不是我想做的。

4

3 回答 3

1

您的路由器无法检测您的计算机(或任何其他网络设备)是否支持局域网唤醒。您的路由器所能做的就是发送一个 WOL 包并希望它会唤醒。

如果调用设备尊重数据包并唤醒必须在设备本身进行配置,并且 OSI 层 4 到 1 中没有任何内容可以告诉您设备是否支持 WOL。

如果您想使用 C# 从您的 PC 发送 WOL 数据包,您可以使用您最喜欢的搜索引擎找到大量示例。这是Bart de Smet 的一个例子

更新

消息“Active (In ARP)”并不意味着您的路由器检测到可以发送 WOL 数据包。它只是告诉您,在路由器 ARP 缓存中,当前是该 IP 或 MAC 地址的匹配条目。这样的缓存具有每个网络设备(也包括您的 PC)。在 Windows 中,只需打开命令行并输入arp -a即可查看 Windows 机器的缓存。在这里,您将获得用于发送到 IP 地址的已存储 mac 地址的列表。黑帽可以尝试操纵此缓存以重定向您的 ip 通信。有关这方面的更多信息,请参见wikipedia

因此,此消息只是告诉您,您的路由器最近与该设备建立了 ip 连接。而已。但它无法告诉您您的设备当前是否能够处理 WOL 数据包(因为它是否已连接电源)。

于 2010-11-10T10:34:26.880 回答
0

您可以从 BIOS 获得有关机器是否支持 WOL 的信息。

如果它受支持,请确保它已打开。许多机器默认禁用该功能。

要通过网络路由 WOL 数据包,您需要将路由器上的端口 9 转发到 255.255.255.255(广播到所有)IP 地址。

于 2010-11-10T09:20:47.507 回答
0

您最好查看http://msdn.microsoft.com/en-us/library/ff566341(VS.85).aspx

这将让您查询布尔值以获取电源管理和设备特定的“启用唤醒”状态。

鉴于它是 WMI,您应该能够远程访问它,但它确实需要设置几个注册表项来公开 WMI 类。

于 2010-10-01T22:22:05.860 回答