2016-04-19 2 views
0

Я не могу понять, как отправить WOL (WakeOnLan) с помощью IoT.Как я могу отправить WOL (UDP)?

Это швы, как будто я должен использовать DatagramSocket, но все образцы, которые я могу найти в Интернете, использует UDPClient.

Как я могу отправить WOL (UDP) в IoT?

Спасибо.

ответ

0

Чтобы отправить волшебный пакет в приложение WinRT, вам действительно нужно использовать DatagramSocket из интерфейса Windows.Networking.Sockets. Это основное решение, которое я написал некоторое время назад:

public async void SendMagicPacket(string macAddress, string ipAddress, string port) 
{ 
    DatagramSocket socket = new DatagramSocket(); 
    await socket.ConnectAsync(new HostName(ipAddress), port); 
    DataWriter writer = new DataWriter(socket.OutputStream); 

    byte[] datagram = new byte[102]; 

    for (int i = 0; i <= 5; i++) 
    { 
     datagram[i] = 0xff; 
    } 

    string[] macDigits = null; 
    if (macAddress.Contains("-")) 
    { 
     macDigits = macAddress.Split('-'); 
    } 
    else if (macAddress.Contains(":")) 
    { 
     macDigits = macAddress.Split(':'); 
    } 

    if (macDigits.Length != 6) 
    { 
     throw new ArgumentException("Incorrect MAC address"); 
    } 

    int start = 6; 
    for (int i = 0; i < 16; i++) 
    { 
     for (int x = 0; x < 6; x++) 
     { 
      datagram[start + i * 6 + x] = (byte)Convert.ToInt32(macDigits[x], 16); 
     } 
    } 

    writer.WriteBytes(datagram); 
    await writer.StoreAsync(); 
    socket.Dispose(); 
} 
Смежные вопросы