Telnet Daten im Memo empfangen

Alle Fragen zur Netzwerkkommunikation

Telnet Daten im Memo empfangen

Beitragvon DL3AD » 12. Mai 2017, 17:54 Telnet Daten im Memo empfangen

Hallo,

ich habe mich erfolgreich mit einem Telnet Server verbunden der ständig Daten liefert die ich auswerten möchte.
In einem TMemo wollte ich die erstmal Zeile für Zeile untereinander auflaufen lassen.
Die erste Zeile landet auch odrnungsgemäß im TMemo.
Nun fehlt mir ein Eventhandler - bzw ich kenne ihn nicht - gibt ei einen für TelnetSend von Synapse ?
Wie kann ich die Daten abhohlen und ins TMemo bringen ?

Code: Alles auswählen
 
procedure TForm1.FormShow(Sender: TObject);
begin
  TN := TTelnetSend.Create;
  TN.TargetHost := 'db0hgw.dyndns.org';
  TN.TargetPort := '4111';
  TN.Timeout := 1000;
  if TN.Login then
    begin
      TN.WaitFor('login:');
      TN.Send('dl3ad'+#$0d+#$0a);
      TN.WaitFor(#$0d+#$0a);
      Label1.Caption:= 'Connectet';
      Memo1.Text:= TN.RecvString;
    end;
end;                                 
 


Gruß Frank
DL3AD
 
Beiträge: 163
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.6.4 FPC 3.0.2) und Debian 8 (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 12. Mai 2017, 18:25 Re: Telnet Daten im Memo empfangen

Synapse ist blockierend.
Du musst wahrsch. TN.WaitFor(#$0d+#$0a); etc. im Loop ausführen.
theo
 
Beiträge: 7764
Registriert: 11. Sep 2006, 18:01

Beitragvon DL3AD » 13. Mai 2017, 12:19 Re: Telnet Daten im Memo empfangen

Hallo,

hier nun meine Lösung - vieleicht hilft es ja später jemanden.

Code: Alles auswählen
 
procedure TForm1.FormShow(Sender: TObject);
begin
  TN := TTelnetSend.Create;
  TN.TargetHost := 'mayodx.ath.cx';
  TN.TargetPort := '7300';
  TN.Timeout := 1000;
  if TN.Login then
    begin
      TN.WaitFor('login:');
      TN.Send('dl3ad'+#$0d+#$0a);//User
      TN.Send(#$0d+#$0a);//ohne PWord weiter
      TN.WaitFor(#$0d+#$0a);
      Form1.Caption:= 'Cluster Connectet';
      Memo1.Clear;
      Timer1.Enabled:= true;
    end;
    TN.Timeout := 10;
end;
 
//Timer zur Clusterabfrage
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled:=false;
  DX:= TN.RecvString;
  if DX <> '' then
    begin
      Memo1.Append(DX);
    end;
  Timer1.Enabled:=true;
end;                                     
 


Der Timer steht auf 100ms.

Gruß Frank
DL3AD
 
Beiträge: 163
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.6.4 FPC 3.0.2) und Debian 8 (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 13. Mai 2017, 12:27 Re: Telnet Daten im Memo empfangen

Wofür brauchst du den Timer?
Ein Loop mit Application.Processmessages würde mMn auch reichen.
Oder übersehe ich da etwas?
theo
 
Beiträge: 7764
Registriert: 11. Sep 2006, 18:01

Beitragvon DL3AD » 13. Mai 2017, 12:43 Re: Telnet Daten im Memo empfangen

Hallo theo,

:shock: kenne ich noch nicht.
Hilf mir mal auf die sprünge :?
DL3AD
 
Beiträge: 163
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.6.4 FPC 3.0.2) und Debian 8 (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 13. Mai 2017, 12:57 Re: Telnet Daten im Memo empfangen

Naja, Application.Processmessages hält das GUI flüssig bzw. ermöglicht die Aktualisierung des Memos (ohne Timer).
Falls TN.RecvString; aber länger blockiert, müsste das Ganze eigentlich in einen separaten Thread.
Vielleicht ist der Timer für den Anfang nicht die schlechteste Lösung.
theo
 
Beiträge: 7764
Registriert: 11. Sep 2006, 18:01

Beitragvon DL3AD » 13. Mai 2017, 13:07 Re: Telnet Daten im Memo empfangen

... jetzt begreife ich was Application.Processmessages ist.
Ich denke eine Timerlösung ist einer Loop vorzuziehen - TN.RecvString; verursacht keine wahrzunehmende Blockaden.

Gruß Frank
DL3AD
 
Beiträge: 163
Registriert: 13. Sep 2013, 11:07
Wohnort: Rügen
OS, Lazarus, FPC: Win7 (L 1.6.4 FPC 3.0.2) und Debian 8 (L 1.6.4 FPC 3.0.2) | 
CPU-Target: 32Bit
Nach oben

• Themenende •

Zurück zu Netzwerk



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried