Hier mal unser mittlerweile durch die ganzen Versuche verhunster Code um hoffentlich einen kleinen Einblick auf unsere Versuche zu bekommen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
sSend: string;
sRecieve: string;
begin
sSend := Edit1.Text + '#13';
IdTCPClient1.IOHandler.WriteLn(sSend);
// sRecieve := IdTCPClient1.IOHandler.ReadLn();
// Memo1.Lines.Add(sRecieve);
// sRecieve := IdTCPClient1.IOHandler.ReadLn();
// Memo1.Lines.Add(sRecieve);
end;
procedure TForm1.CloseButtonClick(Sender: TObject);
begin
IdTCPClient1.Disconnect();
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear();
end;
procedure TForm1.IdIOHandlerStack1Status(ASender: TObject;
const AStatus: TIdStatus; const AStatusText: string);
begin
sleep(1000);
end;
procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
Memo1.Lines.Add('Connected');
end;
procedure TForm1.IdTCPClient1Disconnected(Sender: TObject);
begin
Timer1.Enabled := False;
Memo1.Lines.Add('Disconnected');
end;
procedure TForm1.OpenButtonClick(Sender: TObject);
begin
IdTCPClient1.Host := '10.20.40.220';
// IdTCPClient1.Port := 23; // Telnetport;
IdTCPClient1.Port := 4001;
IdTCPClient1.Connect();
sleep(1000);
IdTCPClient1.IOHandler.WriteLn(chr(13));
Timer1.Enabled := True;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
iInfo: integer;
bInfo: boolean;
sSend: string;
sRecieve: string;
I: integer;
iBufSize: integer;
begin
Timer1.Enabled := False;
// iInfo := IdTCPClient1.IOHandler.ReadTimeout; // ist immer 3000 (3sek)
// bInfo := IdTCPClient1.IOHandler.ReadLnTimedout; // stürzt ebenfalls ab ???
// bInfo := IdTCPClient1.IOHandler.Readable(10); // stürzt ebenfalls ab ???
// label1.Caption := '0';
// if bInfo then
// label1.Caption := '1';
// application.processmessages;
// sleep(1000);
// while bInfo do
// begin
// sRecieve := IdTCPClient1.IOHandler.ReadLnRFC(bInfo);
// Memo1.Lines.Add(sRecieve);
// end;
// I := IdTCPClient1.IOHandler.ReadTimeout;
// showmessage(IntToStr(I));
if IdTCPClient1.IOHandler.Readable() then
begin
// iBufSize := IdTCPClient1.IOHandler.RecvBufferSize;
// sRecieve := IdTCPClient1.IOHandler.ReadLn();
sRecieve := IdTCPClient1.IOHandler.readString(100); // 6000
Memo1.Lines.Add(sRecieve);
end;
// IdTCPClient1.IOHandler.rea
Timer1.Enabled := True;
end;
Zurzeit angeschlossen ist ein riesen Switch, bei einer Eingabe wird der Login erfragt, so sehen wir ob was zurück kommt. Nach einer Zeit und einigen Passwort-Abfragen hängt sich die Anwendung auf und tut nichts mehr.