![]() |
idTCP in iOS
Hallo,
ich habe momentan ein Problem mit dem Empfangen von Daten in meinem Programm. Das Programm funktioniert soweit, nur es werden nur bei jedem zweiten Sendevorgang Daten empfangen. Serverseitig werden die Daten jedoch empfangen. Das ganze läuft in einem AnonymousThread. Hier mal mein aktueller Quellcode:
Delphi-Quellcode:
Es scheint so als würde der InputBuffer sich nur bei jedem zweiten Empfangen zu füllen.
TThread.CreateAnonymousThread(procedure ()
var I: Integer; c: Byte; begin while not Application.Terminated do begin if not IdTCPClient1.Socket.InputBufferIsEmpty then begin if IdTCPClient1.Connected then begin c:=IdTCPClient1.Socket.ReadByte; //mache was mit den Daten end; end else IdTCPClient1.Socket.CheckForDataOnSource(100); end; end).Start; Wenn ich zum Testen die Daten so abrufe, dann kommt immer alles an:
Delphi-Quellcode:
Ich hoffe mir kann jemand bei dem Problem helfen.
procedure TTabbedForm.Button1Click(Sender: TObject);
var s: string; begin s:=IdTCPClient1.Socket.Readln(); Memo1.Lines.Add(s); end; Mit freundlichen Grüßen XXcD |
AW: idTCP in iOS
Indy blockiert bei ReadXXX bis Daten vorhanden sind. Die Prüfung auf Connected ist nicht notwendig.
Indy wird eine Exception auslösen, wenn das ReadByte wegen eines Timeouts oder einer fehlenden Verbindung scheitert.
Delphi-Quellcode:
TThread.CreateAnonymousThread(procedure ()
var C: Byte; begin while not Application.Terminated do begin try C := IdTCPClient1.Socket.ReadByte; // mache was mit den Daten except on E: Exception do begin // behandle Timeout, z.B. durch Neuaufbau der Verbindung end; end else end; end).Start; |
AW: idTCP in iOS
Danke für deine Antwort, ich habe das gerade so geändert wie du geschrieben hast.
Leider verändert sich nichts an meinem Problem, kann es sein, dass die Daten zu klein sind, sodass der Buffer sich füllt? Ich erwarte immerhin nur 13 Bytes pro Paket. |
AW: idTCP in iOS
Zitat:
procedure ReadBytes(var VBuffer: TIdBytes; AByteCount: Integer; AAppend: Boolean = True); d.h.: IdTCPClient1.Socket.ReadBytes(MyBytesArray, 13, False); |
AW: idTCP in iOS
Die Pakete haben leider eine unbekannte Länge.
Ich konnte das Problem aber lösen. Es lag am Client der die CRC Summe die ich empfange falsch berechnet hat. Vielen Dank für die Bemühungen. Mich würde nur noch interessieren warum der Anonymous Thread nicht läuft wenn ich das Programm für Windows compiliere. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 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