Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: TserverSocket und TclientSocket

  Alt 21. Aug 2012, 07:45
In den folgenden zwei Zeilen steckt ein fataler Fehler:
Delphi-Quellcode:
  ReceivedText := Socket.ReceiveText;
  cmd := Copy(ReceivedText, 0, 3);
  data := Copy(ReceivedText, 4, Length(ReceivedText));
Seit wann sind Delphi-Strings 0-basiert?

Die Pufferung geht im Prinzip so:
Delphi-Quellcode:
  ReceivedText := Socket.ReceiveText;
  fBuffer := fBuffer + ReceivedText;
  if CompleteCommandInBuffer (fBuffer) Then begin
     myCommand := ExtractCommandStructureFromBuffer (fBuffer);
     fBuffer := RemoveCommandDataFromBuffer (fBuffer);
     myCommandResult := ProcessCommand (myCommand);
     myCommandResult.SendAnswer(Socket); // Nur nötig, wenn das Kommando bestätigt werden muss
  end
Problem hierbei: Während das Kommando ausgeführt wird, sind keine weiteren Operationen möglich. Das wäre ok, sofern ein query-response implementiert wird.

Geändert von Furtbichler (21. Aug 2012 um 07:50 Uhr)
  Mit Zitat antworten Zitat