Moin,
wie schon in einem anderen Thread beschrieben, habe ich einen WLAN-
TCP-Server, der kontinuierlich Daten sendet (ca. 20 kB/s).
Da es keine Kommunikation in Richtung Server gibt (nur das connect), muss ich den Puffer regelmäßig abfragen.
Dazu erzeuge ich in einem Thread einen TIdTCPClient, der dann in der Endlosschleife abgefragt wird (im Moment noch als string).
Mein Problem: wenn ich die Buffer.size abfrage, bekomme ich immer eine 0, also auch keine Datenabfrage. Wenn ich die Variable im Fall von Null auf 1 initialisiere, bekomme ich noch regelmäßig 0, aber nicht immer.
Wenn ich wie unten gezeigt, vor jeder Abfrage der Puffergröße ein Byte abfrage, bekomme ich immer sinnvolle Werte. Ich scheine damit irgendetwas zu initialisieren oder aufzuwecken.
Delphi-Quellcode:
while not terminated do
begin
s := indyclient.IOHandler.ReadString(1);//hiermit ist die folgende Abfrage zuverlässig
bytecount := indyclient.IOHandler.InputBuffer.Size;
if bytecount = 0 then
begin
bytecount := 1;//das hilft sporadisch, wahrscheinlich bei jedem zweiten Durchlauf
end;
s := indyclient.IOHandler.ReadString(bytecount);
Was passiert da? Gibt es irgendwelche Startsequenzen o.ä, die ich vorher ausführen muss?
Meine Erfahrungen mit
TCP sind fast Null.
Danke, Messie