在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 private static void WakeUp(byte[] mac) {
2 UdpClient client = new UdpClient(); 3 client.Connect(IPAddress.Broadcast, 30000); 4 5 byte[] packet = new byte[17 * 6]; 6 7 for (int i = 0; i < 6; i++) 8 packet[i] = 0xFF; 9 10 for (int i = 1; i <= 16; i++) 11 for (int j = 0; j < 6; j++) 12 packet[i * 6 + j] = mac[j]; 13 14 int result = client.Send(packet, packet.Length); 15 } PS:跨路由器的问题(不是公网IP问题)。如果机器A和机器B处于同一个网段内,用client.Connect(IPAddress.Broadcast,port)是可以的,如果A和B不是处于同一个网段内,那么就要用网段内的广播地址,比如A机器是192.168.1.2,B机器IP地址是192.168.100.3,用A远程唤醒B,就要用B网段的广播地址,192.168.100.255。 IPAddress ip = new IPAddress(new byte[]{192,168,100,255}); client.Connect(ip,port)。原理可以参考网络协议。 其它详细信息,请看AMD的白皮书Magic Packet Technology http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/20213.pdf |
请发表评论