Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Indy 10 und TCP Client... (https://www.delphipraxis.net/75897-indy-10-und-tcp-client.html)

Schucki 26. Aug 2006 19:40


Indy 10 und TCP Client...
 
Hi,

ich habe nun ein TCPClient aus der Indy Sammlung.
Möchte ganz gerne wissen wiviel Zeilen ich mit

IOHandler.Readln auslesen kann...

Im moment mach ich das über einen Timer...


Delphi-Quellcode:
  if IdTCPClient.Connected then begin
    with IdTCPClient do begin
      strResult:=IOHandler.ReadLn;
      Memo1.Lines.Add(strResult);
    end;
  end;
Nur lese ich nicht alle Zeilen aus die drin sind sondern immer nur eine Zeile . :(

Hat jemand eine Idee wie man immer alles auslesen kann?

Gruß Frank...

Dani 26. Aug 2006 20:17

Re: Indy 10 und TCP Client...
 
Zitat:

Zitat von Schucki
Hi,

ich habe nun ein TCPClient aus der Indy Sammlung.
Möchte ganz gerne wissen wiviel Zeilen ich mit

IOHandler.Readln auslesen kann....

Eine :)

Mehrere Zeilen ließt man mit ReadStrings()

Schucki 26. Aug 2006 21:11

Re: Indy 10 und TCP Client...
 
Ok Danke!

Nun jetzt ließ er fleßig in die StringListe ein... nur er wird nie fertig weil immer was neues reinkommt...
Kann man ermitteln wieviele Zeilen empfangen wurden?

Gruß Frank

Harry M. 27. Aug 2006 00:19

Re: Indy 10 und TCP Client...
 
Delphi-Quellcode:
StringList.Count
ist wohl das was Du suchst. Du kannst aber auch
Delphi-Quellcode:
TCPClient.ConnectAndGetAll
verwenden.

Schucki 28. Aug 2006 02:21

Re: Indy 10 und TCP Client...
 
Hi,

ja ich habe einmal verbunden mit dem Server, das klappt auch ganz ausgezeichnet.
Im Timer lese ich noch immer mit Readln aus doch logischer wäre alles auszulesen was da ist.

Ich bekomme vom Server eine unbestimmte Anzahl von Zeilen... das können mal 3 mal 10 mal 14 sein.
Immer wenn ich im Timer da nachschau würde ich dann auch gerne genau die Anzahl auslesen.

Oder sollte man da einen extra Thread aufmachen der ständig im Kreis rennt?

Gruß Frank

Harry M. 28. Aug 2006 09:37

Re: Indy 10 und TCP Client...
 
Wie gesagt verwende
Delphi-Quellcode:
 GetConnectAndGetAll
Dann bekommts Du alles bis die Remoteseite trennt.
Trennt die RemoteSeite überhaupt nicht, kannst Du bei
Delphi-Quellcode:
 Memo1.Lines.Count
ansetzten.

Schucki 29. Aug 2006 15:09

Re: Indy 10 und TCP Client...
 
Danke für die Antworten doch sie führen nicht zum Ziel...

Ich verbinde zu einem Server, logge mich ein, Verbindung wird erst beim PROGRAMMENDE wieder getrennt.
Die Funktion IdTCPClient.ConnectAndGetAll trennt die Verbuindung ja wieder das will ich ja nicht.

Ich kapier es nicht :wall: es muß doch irgendwie gehen...

Weiter am basteln... Frank...

Schucki 4. Sep 2006 09:29

Re: Indy 10 und TCP Client...
 
Hi,

sagt mal was muß man machen damit der Client sich ordendlich vom Server abmeldet?
Ich mach es mit

TCPClient.Disconnect;

Nun wenn aber noch Daten im Client lagern, was ich ja nicht weiß, trennt er nicht ordendlich sondern sagt beim nächsten Connect,

Allrady connect...

Wie macht man es richtig?

MfG Frank...

Carlo91 4. Sep 2006 13:36

Re: Indy 10 und TCP Client...
 
Was willst du programmieren wenn man fragen darf, vieleicht kann ich dir helfen.

P.S. ich kann es aber nicht versprechen das ich dir helfen kann.

MfG Carlo

Schucki 5. Sep 2006 13:04

Re: Indy 10 und TCP Client...
 
Hi Carlo,

ich kann es ja nochmal beschreiben.
Ich möchte mein Programm durch ein Indy TcpClient mit einen Server verbinden.
Das klappt!

Nun lese ich über ein Timer die Daten aus, das geht auch!

Delphi-Quellcode:
if IdTCPClient.Connected then begin
    with IdTCPClient do begin
      strResult:=IOHandler.ReadLn;
      Memo1.Lines.Add(strResult);
    end;
  end;
end;
Meine Frage ist nun noch immer wie ich ALLE Daten an dieser Stelle auslesen kann sodas ich mal 3 mal 5 oder mal 10 Zeilen auf einmal gelesen hab, immer also die Anzahl der Zeilen die auch wirklich zur Verfügung stehen.

Es muß doch möglich sein das abzufragen oder nicht?
Ich glaube das er mir die "Allready connect" Meldung erzeugt da noch Daten vorhanden sind obwohl ich die Verbindung schon getrennt habe... :(

MfG Frank

Schucki 5. Sep 2006 13:31

Re: Indy 10 und TCP Client...
 
Hi,

Lösung gefunden!!! :bounce1:

Delphi-Quellcode:

procedure TfrmMain.timTcpTimer(Sender: TObject);
begin
  if not IdTCPClient.Connected then exit;
  with IdTCPClient do begin
    while not IOHandler.InputBufferIsEmpty do begin
      strlTcpRead.Add(IOHandler.Readln)
    end;

    while strlTcpRead.Count>0 do begin
      ....
      .... // Daten auswerten...
      ....
      strlTcpRead.Delete(0);
    end;
  end;
end;
Dank Euch alle, vielleicht braucht das ja auch mal einer...
Gruß Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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