2 Fragen zu dem IndyClient:
Ich Bekomme Pakete mit einer Größe am Anfang und dem Inhalt
Also habe ich einen Thread, mit dem ich "While(not Terminated) do Empfange"
die Pakete empfange
Das ganze arbeitet mit blocking sockets
1. Frage: Gibt es ein Timeout beim Lesen? Wie kann ich das behandlen?
z.zt. Habe ich das so:
Delphi-Quelltext
1: 2: 3: 4:
| size:=Word(Client.Socket.ReadSmallInt(false)); SetLength(Buffer,2); PWord(@Buffer[0])^:=size; Client.Socket.ReadBytes(Buffer,bfSize); |
Habe aber Angst, dass ich Fehler bekomme bei
a) readSize bekommt nen timeout-->seltsamer wert in size-->rest des packets stimmt schon mal gar nicht
b) readpacket bekommt nen timeout-->parsing im anschluss wird mist, und nächste packete kann ich allesamt vergessen
2. Frage: Wie mache ich das beim Beenden?
ich will ja den Thread auch beenden können oder den Client neu verbinden.
Dazu muss ich ja irgendwie auch das ReadBytes, dass grade auf Daten wartet, abbrechen, und von anfang an neustarten
wie geht das?