AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Indy] TCPclient.IOHandler.InputBuffer.Size ist oft 0
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von messie · begonnen am 13. Okt 2011 · letzter Beitrag vom 25. Okt 2011
Antwort Antwort
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
C.Schoch

Registriert seit: 2. Jan 2006
Ort: Wüstenrot
235 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 13. Okt 2011, 19:51
Hi,

Ich habe diesen Code erfolgreich im Einsatz.

Dieser steht bei mir in einem Timer Event

Delphi-Quellcode:

if FClient.IOHandler <> nil then
begin
   while not FClient.IOHandler.InputBufferIsEmpty do
   begin
     FClient.IOHandler.ReadBytes(FBuffer, FClient.IOHandler.InputBuffer.Size, False);
     // etwas mit FBuffer anstellen
   end;
end;
Tschau Christian
Das System hofft auf Besserung
[Siemens]
  Mit Zitat antworten Zitat
messie

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

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

  Alt 14. Okt 2011, 12:11
Moin,

hilft leider bei mir nicht, dann bekomme ich gar keine Daten

Grüße, Messie
  Mit Zitat antworten Zitat
messie

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

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

  Alt 25. Okt 2011, 12:09
Ich möchte das hier nochmal aufwärmen.

Wenn ich tatsächlich keine Daten habe, wartet TIdTCPClient.IOHandler.ReadBytes unendlich bis neue Daten kommen und ein disconnect ist nicht möglich.
Wenn ich nun dem ReadTimeout einen Wert zuweise, wie kann ich erkennen, ob der timeout ausgelöst wurde? Irgendein Fehlerspeicher?

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz