![]() |
[Wake on Lan] MagicPacket mit UDPSockUtil
Hallo ihr,
ich versuche gerade in meinem Programm eine Wake on Lan Funktion zu implementieren. Dazu verwende ich die ![]() ![]()
Delphi-Quellcode:
Und eigentlich sollte da ungefähr das rauskommen:
procedure TfrmMain.SendMagicPacket(const AMACAdress: string);
var MessageData : array of Byte; i, j: Integer; begin SetLength(MessageData, WAKE_ON_LAN_LENGTH); for i := 0 to 5 do MessageData[i] := $FF; for i := 0 to 15 do for j := 1 to 6 do MessageData[5 + i * 6 + j] := StrToInt('$' + AMACAdress[j * 2 - 1] + AMACAdress[j * 2]); udpSocket.RemotePort := 12287; udpSocket.RemoteHost := '192.168.1.255'; udpSocket.SendBuf(MessageData, WAKE_ON_LAN_LENGTH); udpSocket.RemotePort := 2007; end;
Code:
Aber stattdessen bekommt WireShark folgendes ab:
0000 ff ff ff ff ff ff 00 0e a6 63 b0 72 08 00 45 00 .........c.r..E.
0010 00 82 51 69 00 00 80 11 82 e1 05 2e 60 f3 ff ff ..Qi........`... 0020 ff ff 04 5e 2f ff 00 6e 8d d2 [color=#00ff1f][b]ff ff ff ff ff ff[/b][/color] ...^/..n........ 0030 00 1f d0 5b 4c f1 00 1f d0 5b 4c f1 00 1f d0 5b ...[L....[L....[ 0040 4c f1 00 1f d0 5b 4c f1 00 1f d0 5b 4c f1 00 1f L....[L....[L... 0050 d0 5b 4c f1 00 1f d0 5b 4c f1 00 1f d0 5b 4c f1 .[L....[L....[L. 0060 00 1f d0 5b 4c f1 00 1f d0 5b 4c f1 00 1f d0 5b ...[L....[L....[ 0070 4c f1 00 1f d0 5b 4c f1 00 1f d0 5b 4c f1 00 1f L....[L....[L... 0080 d0 5b 4c f1 00 1f d0 5b 4c f1 00 1f d0 5b 4c f1 .[L....[L....[L.
Code:
Nun beinhaltet MessageData vor dem Absenden folgenden Inhalt:
0000 ff ff ff ff ff ff 00 0e a6 63 b0 72 08 00 45 00 .........c.r..E.
0010 00 82 50 e2 00 00 80 11 65 37 c0 a8 01 02 c0 a8 ..P.....e7...... 0020 01 ff 1b 5a 2f ff 00 6e a7 03 40 07 a5 00 ac fb ...Z/..n..@..... 0030 12 00 36 1b 47 00 e4 fd 12 00 2f 1c 47 00 ac fb ..6.G...../.G... 0040 12 00 38 74 44 00 e0 55 a6 00 e8 c4 ab 00 00 00 ..8tD..U........ 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c8 fb ................ 0060 12 00 69 74 44 00 11 00 00 00 ec 00 00 00 48 00 ..itD.........H. 0070 00 00 00 00 00 00 48 00 00 48 ec fb 12 00 eb 74 ......H..H.....t 0080 44 00 11 00 00 00 ec 00 00 00 38 fd 12 00 18 74 D.........8....t
Code:
Und folgendes steht in dem Paramter:
(255, 255, 255, 255, 255, 255, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241, 0, 31, 208, 91, 76, 241)
Code:
Und übersetzt ins hexadezimale (kann man das irgendwie in der Delphi IDE, das array of Bytes Hexadezimal angezeigt werden?) sind zumindest die ersten Werte richtig (dannach habe ich sie nicht weiter überprüft).
001fd05b4cf1
MfG xZise |
Re: [Wake on Lan] MagicPacket mit UDPSockUtil
Hallo xZise,
ich selber habe es letztens selber in C# gemacht. Dabei habe ich einfach einen Bytearray genommen, um die Mac-Adresse zu übergeben.
Code:
Dementsprechend habe ich dir mal den Code verändert (ungetestet):
public static void WakeOnLan(byte[] mac)
{ UdpClient client = new UdpClient(); client.Connect(IPAddress.Broadcast, 40000); byte[] packet = new byte[102]; for (int i = 0; i < 6; i++) packet[i] = 0xFF; for (int i = 1; i <= 16; i++) for (int j = 0; j < 6; j++) packet[i * 6 + j] = mac[j]; client.Send(packet, 102); client = null; }
Delphi-Quellcode:
type
TMACAdress = Array of Byte[0..5]; procedure SendMagicPacket(const AMACAdress: TMACAdress ); var MessageData : array of Byte[0..101]; i, j: Integer; begin for i := 0 to 5 do MessageData[i] := $FF; for i := 1 to 16 do for j := 0 to 5 do MessageData[i * 6 + j] := AMACAdress[j-1]; udpSocket.RemotePort := 40000; udpSocket.RemoteHost := '255.255.255.255'; udpSocket.SendBuf(MessageData, 102); end; |
Re: [Wake on Lan] MagicPacket mit UDPSockUtil
Nein mein Code funktioniert wunderbar. Fast jedenfalls :D Es fehlte das [0] bei Senden :pale:
Aber jetzt geht es WUNDERBAR :) Dein Code hat übrigens das Problem, dass bei der Komponente 255.255.255.255 nur ins dreier Netz zu gehen scheint (Der Computer hat zwei Netzwerkkarten einmal ins "Dreier-Subnetz" (192.168.3.0) und einmal ins "Einser-Subnetz" (192.168.1.0)). Deshalb muss ich leider 192.168.1.255 aufrufen ;) MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz