我想检测是否可以使用Wake On Lan。
在我的路由器(番茄固件)上有一个信息表 - 当显示设备“活动(在ARP)”时 - 可以通过WOL(离线linux pc)打开此设备。
我想知道它是通过仅路由器功能实现还是我可以在C#或C中实现?函数SendArp可以检测MAC地址并执行“arping”,但这不是我想要做的。
答案 0 :(得分:1)
您的路由器无法检测您的计算机(或任何其他网络设备)是否支持Wake-On-Lan。您的所有路由器都可以发送一个WOL包并希望它会被唤醒。
如果呼叫设备尊重数据包并且必须在设备本身配置唤醒,并且OSI第4层到第1层中没有任何内容可以告诉您设备是否支持WOL。
如果您想使用C#从PC发送WOL数据包,可以使用自己喜欢的搜索引擎找到大量示例。这是one example from Bart de Smet。
消息“Active(In ARP)”并不意味着您的路由器检测到可以发送WOL数据包。它只是告诉您,在路由器内,ARP缓存当前是此IP或MAC地址的匹配条目。这样的缓存有每个网络设备(也是你的电脑)。在Windows中,只需打开命令行并输入arp -a
即可查看Windows计算机的缓存。在这里,您将获得存储的mac地址列表,以便发送到IP地址。黑帽子可以尝试操纵此缓存来重定向您的IP通信。有关此问题的更多信息可以在at wikipedia找到。
所以这条消息告诉你,你的路由器最近有一个到这个设备的ip连接。而已。但它无法告诉您您的设备当前是否能够处理WOL数据包(因为它是否已连接电源)。
答案 1 :(得分:0)
您最好查看http://msdn.microsoft.com/en-us/library/ff566341(VS.85).aspx
这将允许您查询布尔值以进行电源管理和设备特定的“唤醒启用”状态。
鉴于它是WMI,您应该能够远程访问它,但它确实需要设置几个注册表项来公开WMI类。
答案 2 :(得分:0)
您可以从BIOS获得有关计算机是否支持WOL的信息。
如果支持,请确保已开启。许多计算机默认禁用该功能。
要通过网络路由WOL数据包,您需要将路由器上的端口9转发到255.255.255.255(Brodcast-to-all)IP地址。