Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

Re: ClientSocket/ServerSocket und Hamachi

  Alt 23. Mär 2009, 08:28
Zitat von Socke_SG:
Meine Vermutung ist, dass die Befehle evtl nicht komplett übertragen werden.
Richtig, die Daten können in unvorhersagbarer Weise zerstückelt werden.
Die Datenhäppchen kommen aber gottseidank ich richtiger Reihenfolge; dafür sorgt das Betriebssystem.

Daher muss der Empfang der Daten immer so aussehen:
Delphi-Quellcode:
// dieser Sourcecode ist so vielleicht nicht direkt compilierbar
// er soll nur das Prinzip zeigen
procedure TForm1.DataReceivedHandler(Sender:TObject);
var
  command : string;
  p : integer;
begin
  // empfangene Daten anhängen
  FReceiverBuffer := FReceiverBuffer + socket.ReceiveText;
  // Annahme: alle Befehle enden mit CR/LF
  p := Pos(#13#10, FReceivebuffer);
  if p <> 0 then
  begin
    // Befehl rauskopieren
    command := Copy(FReceiveBuffer, 1, p-1);
    // und aus dem Empfangspuffer entfernen
    FReceiveBuffer := Copy(FReceiveBuffer, p+1, 99999);
    ParseAndExcuteCommand(command);
  end;
end;
  Mit Zitat antworten Zitat