Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TidTCPServer schaltet bei Telnet Localecho ein (https://www.delphipraxis.net/122805-tidtcpserver-schaltet-bei-telnet-localecho-ein.html)

jojoko 22. Okt 2008 11:17


TidTCPServer schaltet bei Telnet Localecho ein
 
Hallo,

ich habe das Problem, das bei einer Verbindung mit Windows Telnet zu einen Indy TCP Server das locale Echo bei Telnet eingeschaltet wird.
Wenn die Verbindung aufgebaut wird ist noch kein Echo vorhanden. Wird das erste Zeichen vom Server zu Telnet gesendet wird das Echo eingeschaltet.

Wie kann man es das Echo vermeiden oder wieder abschalten ?

Gruß Jürgen

hier ein beispiel:

Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdSimpleServer,
  IdCustomTCPServer, IdEchoServer, IdTCPServer, IdContext;

type
  TForm3 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    procedure IdTCPServer1Connect(AContext: TIdContext);
    procedure IdTCPServer1Execute(AContext: TIdContext);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.IdTCPServer1Connect(AContext: TIdContext);
var
  test:String;
begin
  Test:=AContext.Connection.IOHandler.ReadLn;// Eingabe noch Ohne LOCALECHO
  AContext.Connection.IOHandler.Writeln(Test);// Was geschieht hier??
  Test:=AContext.Connection.IOHandler.ReadLn;// Eingabe mit LOCALECHO
end;

procedure TForm3.IdTCPServer1Execute(AContext: TIdContext);
begin
  Sleep(1);
end;

end.

jojoko 23. Okt 2008 16:53

Re: TidTCPServer schaltet bei Telnet Localecho ein
 
Ich habe eine Möglichkeit gefunden den Fehler zu umgehen.

Wenn ich vorab die Befehlskette
#255#253#1
sende, habe ich kein lokales Echo mehr.
Die Antwort von Telnet muss ich dann natürlich abfangen.

Code:
procedure TForm3.IdTCPServer1Connect(AContext: TIdContext);
var
  Response:String;
begin
  Response:='';
  AContext.Connection.IOHandler.Write(#255#251#1); // (IAC WILL ECHO)
  while length(Response)<3 do
    Response:=Response+AContext.Connection.IOHandler.ReadChar; // Antwort muss ausgelesen werden!!!!!!
  // Hier kann jetzt noch die Antwort von Telnet weiter ausgewertet werden.
  // Response sollte den Wert #255#253#1 haben. (IAC DO ECHO)
 :
 :
end;
Falls jemand eine bessere Lösung hat nur her damit :)

Gruß Jürgen


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:58 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 by Thomas Breitkreuz