Einzelnen Beitrag anzeigen

messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

[Indy] TCPclient.IOHandler.InputBuffer.Size ist oft 0

  Alt 13. Okt 2011, 16:58
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
  Mit Zitat antworten Zitat