AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Verständnis einer Komponente / Umbau
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnis einer Komponente / Umbau

Ein Thema von Cyberaxx · begonnen am 14. Nov 2006
Antwort Antwort
Benutzerbild von Cyberaxx
Cyberaxx

Registriert seit: 15. Jul 2005
311 Beiträge
 
Delphi XE5 Professional
 
#1

Verständnis einer Komponente / Umbau

  Alt 14. Nov 2006, 10:15
Hallo,

ich wende mich ein weiteres mal verzweifelt an euch.

Ich habe schon in einem anderen Beitrag etwas über ein Programm bzw.komponente verlauten lassen.
Das hier ist nun aber ein anderes und sicher grösseres Problemchen, zumindest für mich.

Es geht um Socket / TCP Komponenten.

Ich versuche einen Bot für das game Anarchy Online zu schreiben.
Offiziell ist nur eine PHP Chat Komponente freigegeben, auf die alles(natürlich PHP) Bots aufbauen.

Nach etwas suchen bin ich auf eine Koponente gestossen, die für Delphi mal geschrieben wurde.
Der Schreiber der Komponente meldet sich für fragen nicht und arbeitet auch nicht mehr weiter an der
Komponente. Zudem gibt es einen Chatclient, der auch die Komponente verwendet.
Er handlet sie aber eben wie nen Chatclient und meins ist da doch etwas umfangreicher.

Habe leider wenig Ahnung von Sockets in Verbindung mit Streams, So richtig fündig werd ich hier zu
meinem Problem leider auch nicht. Bosher kam ich mit Sendtext vollkommen aus.

Es wurden leider auch Fremdkomponenten benutzt, was es für mich noch etwas schwerer macht.

Ein Auszug aus dem Code, der den Datenstrom emfängt:

Delphi-Quellcode:
function TAOChat.ReceivePacket(const Socket: TTCPClientSocket):
  TAOChatIncomingPacket;
const
  Step = (8*1024)-1; // 16383;
var
  PacketType: SmallInt;
  PacketSize: SmallInt;
  Received: SmallInt;
  ReadSize: SmallInt;
  Buffer: array[0..Step] of Char;
  DataStream: TStream;
  Size: Integer;
  s: string;
begin
  Result := nil;

  if (FClient.Socket.State <> ssConnected) or
    (FClient.Socket.Negotiating <> False) or
    (FClient.Socket.NegotiatingProxy <> nil) then
    Exit;

  Size := FClient.Socket.Peek(Buffer, 4);
  if Size < 4 then
    Exit;

  FClient.Socket.Read(PacketType, 2);
  PacketType := ntohs(PacketType);
  FClient.Socket.Read(PacketSize, 2);
  PacketSize := ntohs(PacketSize);
  DataStream := TMemoryStream.Create;
  try

    ReadSize := PacketSize;
    while DataStream.Position < PacketSize do
    begin
      if ReadSize > Step + 1 then
        Size := Step + 1
      else
        Size := ReadSize;

      Received := FClient.Socket.Read(Buffer, Size);
      if Received > 0 then
      begin
        ReadSize := ReadSize - Received;
        DataStream.Write(Buffer, Received);
      end;
    end;

    DataStream.Position := 0;
    Result := TAOChatIncomingPacket.Create(PacketType, DataStream);
  finally
    DataStream.Free;
  end;

end;
Wenn ich dagegen in meinem Socket(TClientsocket) im OnRead alleine schon die länge auslese komme ich auf 38 und irgendwie bei dem anderen auf 34. Was in der Function die einzelnen befehle bedeuten weiss ich leider auch nicht so genau.

Das Ergebnis auf meiner Prozedur:
Zitat:
(#0, #0, #0, '"', #0, ' ', '4', 'f', 'f', 'a', '4', '3', '1', '9', 'f', '2', '2', '8', 'd', '3', '9', 'a', '7', 'd', 'c', 'e', '1', '9', 'e', 'f', 'b', 'd', '8', '6', '3', 'b', '4', '0', #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0,
Ergebnis aus der Original Funktion:
Zitat:
(#0, ' ', '1', '5', '7', '3', '4', '0', '4', '2', 'b', '8', 'b', 'f', '5', 'b', '9', 'e', '9', '9', 'a', 'e', 'f', 'c', 'f', '3', 'd', 'd', '2', 'b', 'b', '3', '2', '9', #20, #0, #0, '—', #20, #0, 'P', #0, #0, #0, #0, #0, #20, #0, #24, 'î', '‘', '|', #0, #0, #0, #0, #8, '—', #20, #0, 'o', '>', '’', #1, 'À', 'Ù', #18, #0, ' ', #1, #20, #0, #16, #0, #0, #0, 'È', '£', #20, #0, 'Ø', #3, #20, #0, '1', #0, #0, #0, '†', 'Ø', '—', '|', #0, #0, #0, #0, #0, #0, #20, #0, 'è', '£', #20, #0, '†', '¶', '’', '|', ' ', #0, #0, #0, 'Ð', 'Ÿ', #20, #0, #0, #0, #20, #0, #5, #0, #0, #0, '†', 'Ø', '—', '|', #24, '�', '•', '|', 'P', #2, #0, #0, 'i', #1, #4, 'P', '†', '¶', '’', '|', #0, #0, #0, #0, '¸', #0, '�', #24, #0, #0, '$', #0, #0, #0, #0, #0, '”', 'Ú', #18, #0, ' ', #1, #20, #0, '¼', 'Ú', #18, #0, 'ä', #0, #19, #0, 'G', #0, #0, #0, 'Ô', #0, #19, #0, #0, #0, #19, #0, '8', #2, #0, #0, '3', 'R', '’', '|', '¼', 'Ú', #18, #0, 'ˆ', '¡', #20, #0, #0, #0, #0, #0, 'ˆ', '¡', #20, #0, '�', '¡', #20, #0, 'X', 'Û', #18, #0, ' ', #16, #19, #0, '1', #0, #0, #0, ' ', #0, #0, #0, '¸', '£', #20, #0, 'ð', 'Û', #18, #0, #0, #0, #0, #0, #0, #0, #0, #0, ' ', #0, #0, #0, 'd', #1, #20, #0, #0, #0, #3, #0, #5, #0, #0, #0, '8', #2, #0, #0, #0, #0, #20, #0, 'P', #2, #0, #0, '}', ']', '’', '|', 't', 'Û', #18, #0, #24, 'î', '‘', '|', '�', '¶', '’', '|', 'ÿ', 'ÿ', 'ÿ', 'ÿ', #0, #0, #0, #0, '„', 'Û', #18, #0, ' ', #1, #20, #0, #8, #6, #20, #0, '†', 'Ø', '—', '|', 'G', #0, #0, #0, #0, #0, #0, #0, #0, #0, #20, #0, '8', #2, #0, #0, '@', 'Û', #18, #0, '`', 'Â', '˜', '|', 'ˆ', '¡', #20, #0, '\', 'Û', #18, #0, 'ˆ', '¡', #20, #0, '�', '¡', #20, #0, #0, #0, #0, #0, #24, #0, #0, #0, #3, #0, #0, #0, ' ', #0, #0, #0, '¸', '£', #20, #0, 'ˆ', '¡', #20, #0, '8', #2, #0, #0, #0, #0, #0, #0, #0, #0, #0, #0, 'd', #1, #20, #0, #0, #0, #3, #0, 'Ø', #3, #20, #0, '8', #2, #0, #0, #0, #0, #20, #0, 'p', 'Ù', #18, #0, #24, 'î', '‘', '|', #0, 'Ü', #18, #0, #24, 'î', '‘', '|', '�', '¶', '’', '|', 'ÿ', 'ÿ', 'ÿ', 'ÿ', '†', '¶', '’', '|', #16, 'Ü', #18, #0, '¢', 'Ø', '—', '|', #8, #6, #2
Vllt. steiger ich mich da auch zu sehr in etwas rein, aber es wäre am Ende denke ich so besser als um Fehler rum zu bauen.
Nebenbei die PHP Classe ist im Gegensatz zu der Komponente winzig...

Nen sehr gutes Tutorial für die Sockets in Verbindung mit Streams wäre vllt. auch noch recht hilfreich.

Gruss Cyber

[edit=SirThornberry]Titel korrigiert - Mfg, SirThornberry[/edit]
Daniel
Das Aufwachen aus einem boesen Traum muss einen nicht erleichtern. Es kann einen auch erst richtig gewahr werden lassen, was man Furchtbares getraeumt hat, vielleicht sogar welcher furchtbaren Wahrheit man im Traum begegnet ist!
  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 15:13 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