![]() |
Indy TCP Streams senden/empfangen
Hallo,
ich versuche im Moment in meinem Chat Streams zu empfangen, ich weiß aber nicht ob das so richtig ist da manchmal noch fehler auftreten.
Delphi-Quellcode:
Das ganze läuft in einem Timer und immer wenn nichts zum empfangen da ist wird das Except ausgelöst.
var
ReadStream: TStream; begin if IdTCPClient1.Connected then begin ReadStream:= TMemoryStream.Create; try try IdTCPClient1.IOHandler.ReadStream(ReadStream, -1, false); ReadStream.Seek(0,0); ReadData(ReadStream); Except end; finally ReadStream.Free; end; end else begin Timer1.Enabled:=false; ShowError('Verbindung unterbrochen!'); end; end; Kann man das auch irgendwie eleganter lösen? Ich weiß einfach nicht ob ich das so richtig mache, wäre nicht schlecht wenn sich das mal jemand anschauen würde. |
Re: Indy TCP Streams senden/empfangen
1.) TIdTCPClient hat ein .ReadStream . Dafür muss man nicht den IOHandler direkt bemühen.
2.) Code-Schnipsel kann man auch einrücken. Dann sind sie für denjenigen, der den Fehler suchen soll leichter zu lesen und der Entwickler profitiert ganz nebenbei auch noch von dem leichter zu lesenden Code. 3.) Jeder Stream kennt intern seine Länge. Wenn du vorher prüfst, ob überhaupt was im Stream drin steht, kann dein Programm dann auch sicher sein, dass es nicht mit leeren Streams zu kämpfen hat (.Size <> 0). [Bezug auf Zeile 11] 4.) Ja schön, es tritt eine Exception auf. Wo? Und ist das vllt. eine ETopSecret? Bernhard |
Re: Indy TCP Streams senden/empfangen
Ich bekomme in dem Exception von dem try Block bei dem Readstream ein Error
und zwar Read Timeout. Deshalb wollte ich auch wissen ob man das irgendwie ohne Exceptions lösen kann. Also dass beim lesen keine Fehler entstehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz