Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: ServerSocket fehler?? Wenn es ein Fehler ist

  Alt 28. Jun 2007, 17:29
Zitat von tomate007:
ich brauch es aber, damit der Client die kommandos in der [--] versteht, das er die sachen einzelnt sendet.
Das ist ein Denkfehler. Der Client muss selber feststellen, an welcher Stelle ein neuer Befehl beginnt.
Der Client muss alle Datenpakete hintereinander setzen und daraus seine Befehle entnehmen.
Bleibt ein "halber" Befehl im Puffer, muss der Client diesen bis zum Empfang des nächsten Datenpakets
zwischenspeichern.

Viele Internetprotokolle (FTP, SMTP, POP3, ...) verwenden einen Zeilenumbruch (LF) als Trenner zwischen den einzelnen Befehlen.
Das würde ich dir auch empfehlen.

Hier etwas Pseudocode:
Delphi-Quellcode:
var
   daten:string;
procedure TForm1.OnReceive();
var
   p : integer;
   befehl : string;
begin
   // Daten anhängen
   daten := daten + socket.ReceiveString;

   // Nach Befehlen suchen
   repeat
      p := Pos(daten, #10); // Suche nach Befehlstrenner
      if p <> -1 then
      begin
        befehl := Copy(daten, 1, p); // einzelnen Befehl rausziehen
        Delete(daten, 1, p+1); // Befehl aus Puffer löschen
        ExecuteBefehl(befehl); // Befehl ausführen
      end;
   until p=-1;
end;
Andreas