Der Fehler tritt auf egal ob man Quit eingibt und dann der Server die COnnection beendet oder ob man selber im Code ein Disconnect des Clients aufruft.
Telnet.ClosedGratefully gibt's scheinbar nur als ReadOnly-Porperty.
Hier mal der implementation-Teil meiner Testanwendung:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
//Hier Host und Port konfigurieren
Telnet.Host:='
192.168.101.24';
Telnet.Port:=4301;
end;
procedure TForm1.btnConnectClick(Sender: TObject);
begin
Telnet.OnDataAvailable:=React;
Telnet.Connect;
end;
procedure TForm1.btnDisconnectClick(Sender: TObject);
begin
try
// Telnet.SendCmd('Quit',-1);
Telnet.Disconnect;
except on E:
Exception do
Memo.Lines.Add('
y:'+e.
Message);
end;
end;
procedure TForm1.btnSendClick(Sender: TObject);
begin
SendCommand;
end;
procedure TForm1.edCmdKeyPress(Sender: TObject;
var Key: Char);
begin
if Key = CHR(13)
then
SendCommand;
end;
procedure TForm1.SendCommand;
var cmd:
String;
begin
cmd:=Trim(edCmd.Text);
if Telnet.Connected
then
Telnet.SendCmd(cmd,-1)
else
showmessage('
Client ist nicht verbunden!');
end;
procedure TForm1.React(Buffer:
String);
begin
try
Memo.Lines.Add(Buffer);
except on e:
Exception do
Memo.Lines.Add('
x:'+e.
Message);
end;
end;
Ich hab auch mal versucht die
Exception abzufangen, aber die kommt scheinbar an einer anderen Stelle. Ich kann diese aber nicht sehen, da sie wohl irgendwo in den Indys ist?
Ganz komisch ist, dass ich mich mit meiner Testanwendung jetzt gar nicht mehr an dem Server anmelden kann. Sobald ich den Usernamen sende via SendCmd friert alles ein. Connecten geht aber noch, so dass z.B. auch der Login-Prompt noch kommt.
Mit Putty z.B. funzt es aber noch komplett.