2016-04-19 5 views
0

IoTを使ってWOL(WakeOnLan)を送信する方法を理解できません。WOL(UDP)はどのように送信できますか?

私はDatagramSocketとする必要がありますが、私がオンラインで見つけることができるすべてのサンプルは、UDPClientを使用します。

IoTでWOL(UDP)を送信するにはどうすればよいですか?

ありがとうございました。

答えて

0

WinRTアプリケーションでマジックパケットを送信するには、実際にはWindows.Networking.Sockets APIのDatagramSocketを使用する必要があります。 これは私がしばらく前に書いた基本的な解決策です:

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(); 
} 
関連する問題