AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Indy10] ReadStream hängt Client auf

[Indy10] ReadStream hängt Client auf

Ein Thema von Zacherl · begonnen am 20. Apr 2007 · letzter Beitrag vom 20. Apr 2007
Antwort Antwort
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

[Indy10] ReadStream hängt Client auf

  Alt 20. Apr 2007, 17:30
Hey,

ich habe clientseitig folgenden Code:

Delphi-Quellcode:
if IdTCPClient1.Connected then
  begin
    SS := TStringStream.Create('');
    try
      IdTCPClient1.IOHandler.ReadStream(SS);
      // testen
      if SS.DataStream <> 'then
      begin
        ShowMessage(SS.DataStream);
      end;
    finally
      SS.Free;
    end;
  end;
Das Problem ist nur, dass sich der Client aufhängt, wenn keine Daten für ReadStream vorhanden sind. Vorher sende ich vom Server mittels IOHandler.Write(SS, 0, true) einige Streams zum Client, die auch wunderbar empfangen werden. Erst sobald ich keine Streams mehr sende hängt der Client sich auf.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#2

Re: [Indy10] ReadStream hängt Client auf

  Alt 20. Apr 2007, 17:40
Hallo!

Ja, das ist tatsächlich die normale Vorgehensweise bei Indy. Du rufst Readstream auf, und das Programm wird solange warten, bis endlich ein Stream ankommt. Wenn keiner mehr kommt... Tja.

Deshalb habe ich das Lesen in einen separaten Thread ausgelagert. Ich weiss nicht, ob ich das hier auch gepostet habe, aber im DF gibts die SimpleTCP-Komponenten von mir, da kannst du dich ja mal am Code orientieren.

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: [Indy10] ReadStream hängt Client auf

  Alt 20. Apr 2007, 18:03
Mh okey, also das ganze in einem Thread ablaufen lassen kann ich machen, aber geht der ganze Lesevorgang dann nicht trotzdem auf die CPU Auslastung. Am besten werde ein TimeOut Wert nur für den Fall, dass kein Stream da ist .. aber nicht, dass hinterher mitten im Stream abgebrochen wird .. das wäre fatal.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#4

Re: [Indy10] ReadStream hängt Client auf

  Alt 20. Apr 2007, 18:07
Nein nein, der verbrät keine (oder nur sehr wenig) CPU-Zeit. Er schläft eben genau so, wie der Hauptthread es nun bei dir tut. Du kannst ja mal währenddessen dir die CPU-Last anschauen, die wird nicht hochgepusht. Die Indy-Komponenten selber warten eben irgendwo auf eine Reaktion vom BS oder ähnliches, währenddessen tun sie nichts.

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#5

Re: [Indy10] ReadStream hängt Client auf

  Alt 20. Apr 2007, 18:16
Ah gut .. vielen Dank dir .. dann werde ich die Abfrage mal in einen Thread auslagern.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:23 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