Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi callback SendTo - sende eigenen Buffer (https://www.delphipraxis.net/151837-callback-sendto-sende-eigenen-buffer.html)

C0pa 3. Jun 2010 11:43


callback SendTo - sende eigenen Buffer
 
Delphi-Quellcode:
function callbackSendTo(s: TSocket; var Buf; len, flags: Integer; var addrto: TSockAddr; tolen: Integer): Integer; stdcall;
So das ist meine Funktion. Beim Aufruf dieser Callbackfunktion wandel ich den Inhalt von Buf erstmal in Hexadezimal um und schau ob es sich bei diesem um ein bestimmtes Paket handelt.
Wenn es sich um eben dieses Paket handelt möchte ich das vorletzte Byte in ein 'A' ändern. Das Problem ist nicht das ändern des 'A' sondern das anschließende Aufrufen mit den richtigen Parametern.


Delphi-Quellcode:
function callbackSendTo(s: TSocket; var Buf; len, flags: Integer; var addrto: TSockAddr; tolen: Integer): Integer; stdcall;
var
  packet: TStringDynArray;
  buffer: Pointer;
begin
  packet := getPacketAsHex(Buf, Len);
  if Length(Packet) > 0 then
  begin
    Buffer := PChar(HexToStr(implode('', packet)));
    Result := orgiSendTo(s, Buffer, Len, Flags, addrto, tolen);
  end else
    Result := orgiSendTo(s, Buf, Len, Flags, addrto, tolen);
end;
Also kurze Erläuterung. getPacketAsHex wandelt das Packet in einen Hexadezimalstring um. Wenn die Länge von Packet > 0 ist, dann handelt es sich um das spezifische Paket. Packet enthält dann alle modifizierten Bytes. Nun habe ich jedoch kein Plan wie ich das letzlich erfolgreich sende. So wie ich es aktuell mache funktioniert es nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:28 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