![]() |
TIdTCPClient buffer leerlesen
Hallo zusammen,
habe folgendes Problem: Ich habe hier ein externes Gerät, dass per TCP angesprochen wird und auf Befehl permanent Daten (immer ein Integer) schickt (Port 23, also Telnet). Ich habe dazu eine Anwendung geschrieben und einen TIdTCPclient in einen Thread verpackt. Der Thread macht die ganze Zeit ein FTcpClient.IOHandler.ReadInteger und kümmert sich darum die Daten an andere Threads zu verteilen. Hab jetzt das Problem, dass plötzlich (nach einer Weile) die ausgelesenen Daten korrupt sind. Das sieht dann so aus, also währe mal ein byte verloren gegangen und er hängt jetzt hinterher. Eigentlich sollte sowas auf TCP aber nicht möglich sein, also woran kann das liegen? Evtl. ist das Gerät auch dumm und macht Fehler. Was mir evtl. helfen könnte währe den Buffer nach jedem ReadInteger komplett leerzulesen, damit sich Fehler nicht aufaddieren. Wie geht das? habe dazu folgendes probiert:
Delphi-Quellcode:
klappt aber nicht. Komischerweise scheint der immer leer zu sein, obwohl massig daten kommen.
while not InputBufferIsEmpty do
... Danke schonmal EDIT: Habe gerade mal den Wireshark angeschmissen und gesehen, dass teilweise ein Int.-Packet aufgesplittet wird (also erst 3bytes ankommen, dann das 4. hinterher). Allerdings sehe ich sonst keine Unregelmäßigkeiten -> DOCH Habe mir das nochmal genau geloggt: Zitat:
Was soll ich denn jetzt machen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 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