AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Wake on Lan] MagicPacket mit UDPSockUtil
Thema durchsuchen
Ansicht
Themen-Optionen

[Wake on Lan] MagicPacket mit UDPSockUtil

Ein Thema von xZise · begonnen am 22. Nov 2008 · letzter Beitrag vom 22. Nov 2008
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

[Wake on Lan] MagicPacket mit UDPSockUtil

  Alt 22. Nov 2008, 11:56
Hallo ihr,

ich versuche gerade in meinem Programm eine Wake on Lan Funktion zu implementieren. Dazu verwende ich die Hier im Forum suchenUDPSockUtil. Nun stehen die Rechner in der Schule und ich Programmiere gerade über RemoteDesktop. Da die Sicherung (übers Wochenende) für die Rechner raus ist können sie nicht reagieren. Aber es gibt ein Programm mit einer batch wo es schon an sich funktioniert. Aber ich hätte das gerne in meinem Programm selber implementiert. Mein Code ist dabei von den Schweizern. Wobei ich es etwas formatiert habe:
Delphi-Quellcode:
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;
Und eigentlich sollte da ungefähr das rauskommen:
Code:
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.
Aber stattdessen bekommt WireShark folgendes ab:
Code:
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
Nun beinhaltet MessageData vor dem Absenden folgenden Inhalt:
Code:
(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)
Und folgendes steht in dem Paramter:
Code:
001fd05b4cf1
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).

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
TurboMartin

Registriert seit: 13. Feb 2006
Ort: Bad Honnef
765 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: [Wake on Lan] MagicPacket mit UDPSockUtil

  Alt 22. Nov 2008, 12:56
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:
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;
}
Dementsprechend habe ich dir mal den Code verändert (ungetestet):
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;
Tomorrow will be cancelled due to lack of interest.

  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: [Wake on Lan] MagicPacket mit UDPSockUtil

  Alt 22. Nov 2008, 13:09
Nein mein Code funktioniert wunderbar. Fast jedenfalls Es fehlte das [0] bei Senden

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
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz