AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Socket.ReceiveText

Ein Thema von S - tefano · begonnen am 15. Aug 2003 · letzter Beitrag vom 19. Aug 2003
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#11

Re: Socket.ReceiveText

  Alt 16. Aug 2003, 18:57
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
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#12

Re: Socket.ReceiveText

  Alt 19. Aug 2003, 14:24
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
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Benutzerbild von S - tefano
S - tefano

Registriert seit: 16. Dez 2002
Ort: Dülmen
477 Beiträge
 
Delphi 2009 Professional
 
#13

Re: Socket.ReceiveText

  Alt 19. Aug 2003, 14:27
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]
"Sir, we are surrounded!" - "Excellent, we can attack in every direction!"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:24 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