Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Socket.ReceiveText (https://www.delphipraxis.net/7556-socket-receivetext.html)

S - tefano 16. Aug 2003 17:57

Re: Socket.ReceiveText
 
TrivialFTP ist im Wortlaut ein Protokoll, ein vereinfachtes FTP.
Dazu gibts in der Indy Suite zwei passende Komponenten: Server und Client.

Bis dann,

S - tefano

S - tefano 19. Aug 2003 13:24

Re: Socket.ReceiveText
 
GELÖST!

Ok, nach aktuellem Wissensstand war es ja so, dass ich nach einem Aufruf von Socket.ReceiveText nichts mehr in den FileStream schreiben konnte, weil ReceiveText die Daten nach dem Lesen aus dem Speicher entfernt.

Eigentlich hätt ich auch früher drauf kommen können, aber ich machs jetz so:

Delphi-Quellcode:
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
  iLen: Integer;
  Bfr: Pointer;
  str: string;
  sstr: TStringStream;
begin
  iLen := Socket.ReceiveLength;
  GetMem(Bfr, iLen);
  sstr:= TStringStream.Create('');
  try
    Socket.ReceiveBuf(Bfr^, iLen);
    sstr.Write(Bfr^, iLen); //anstatt alles also per ReceiveText zu leeren, schreibe ich mir die Daten erstmal in einen StringStream
    str:= sstr.DataString; //das dann in einen String (muss eigentlich nicht, kann aber...)
    if copy(str, 1, 4) = plakette then begin //dann kann ich überprüfen ob es eine Nachricht für mich ist, die mir das Gegenüber geschickt hat
      //hier kann ich dann die normale Nachrichtenverarbeitung machen
    end
    else FStream.Write(Bfr^, iLen); //FStream ist ein TFileStream, der woanders createt wird. Wenn ich also die ersten Zeichen nicht als Plakette erkenne, schreibe ich die Daten direkt in den FileStream
  finally
    FreeMem(Bfr);
    FStream.Free;
    sstr.Free;
  end;
end;
Getestet - läuft.
Juchuuuuuuu!!!

Bis dann,

S - tefano

S - tefano 19. Aug 2003 13:27

Re: Socket.ReceiveText
 
Hä?
Hab den Post jetzt als offene Frage markiert, um ihn danach wieder als gelöst zu markieren, damit man das dann auch neben dem Post sieht.
Aber wenn ich ihn bearbeiten will, sehe ich nirgendwo die Option, ihn als gelöst zu markieren, und im Formular für ne Antwort find ich da auch nix...

Wie markiere ich den Thread denn jetzt blos als gelöst?!


[EDIT]
Ups, habs hinbekommen, sry.
[/EDIT]


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr.
Seite 2 von 2     12   

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