我想检测是否可以进行Wake On Lan。
在我的路由器(番茄固件)上,有一个带有信息的表-当显示设备“活动(在ARP中)”时,可以通过WOL(离线Linux PC)打开该设备。
我想知道它是否仅通过路由器功能实现,还是可以在C#或C中做到这一点?函数SendArp可以检测到MAC地址并执行“ arping”操作,但这不是我想要的。
最佳答案
您的路由器无法检测到您的计算机(或任何其他网络设备)是否支持局域网唤醒。您的路由器所能做的就是发送一个WOL程序包,并希望它将唤醒。
如果呼叫设备尊重数据包并且必须在设备本身进行唤醒,并且OSI第4至1层中没有任何内容可以告诉您设备是否支持WOL。
如果您想使用C#从PC发送WOL数据包,则可以使用自己喜欢的搜索引擎找到大量示例。这是one example from Bart de Smet。
更新资料
消息“活动(在ARP中)”并不意味着您的路由器检测到可以发送WOL数据包。它只是告诉您,在路由器中ARP缓存当前是与此IP或MAC地址匹配的条目。这样的缓存具有每个网络设备(也包括您的PC)。在Windows中,只需打开命令行并输入arp -a
即可查看Windows计算机的缓存。在这里,您将获得用于发送到IP地址的已存储mac地址的列表。黑帽可以尝试操纵此缓存来重定向您的ip通信。可以在at wikipedia中找到有关此信息的更多信息。
因此,此消息只是告诉您,您的路由器最近与该设备建立了IP连接。而已。但是它无法告诉您您的设备当前是否能够处理WOL数据包(因为它已接通电源)。
关于c# - 检测WOL可能性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3842976/