Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Problem mit case-of Anweisung in ClientSocket1Read

  Alt 5. Nov 2005, 08:42
Nun ja, es erklärt warum das Showmessage zweimal kommt in sofern, dass du ja einen Empfangspuffer hast. Und der wird in n-Schritten gefüllt. D.h. bei jedem (asynchronen) Eintreffen von Daten wird die Ereignisbehandlung für das Eintreffen von Daten ausgelöst. Bei den ersten Bytes (die noch nicht vollständig Daten enthalten) -> Erstes ShowMessage, bei dem Rest -> zweites ShowMessage.
Da sleep aber glaube ich den ganzen Prozess lahm legt, solltest du lieber in einer Schleife warten, die auch weitere Prozessabläufe erlaubt.
Du solltest aber mal gucken, wieviele Bytes wirklich gelesen wurden (rückgabewert von socket.ReceiveBuf), wenn der sich von SizeOf(Daten) unterscheidet, liegt es wohl daran.

Delphi-Quellcode:
  if Socket.ReceiveBuf(daten, SizeOf(daten)) <> SizeOf(daten) then
    begin
      ShowMessage('Aha, noch nicht alles da');
    end;
  Mit Zitat antworten Zitat