Entwickler-Ecke
Internet / Netzwerk - IdTelnet Passwortübergabe
realAndy - Mo 16.01.12 15:42
Titel: IdTelnet Passwortübergabe
Hi,
ich möchte micht mit der Indy Komponente IdTCPClient mit einem Server über Telnetverbindung verbinden. Hierzu muss ich ja den Loginnamen und das Passwort übertragen. Wie kann ich dies aber machen?
Wenn ich folgen Code ausführe, dann passiert erst eine weile nichts und dann kommt die Meldung Connection Closed Gracefully.
IdTCPClient1.IOHandler.ReadLn gibt gar nichts zurück.
Was macheich falsch, b.z.w. wie sende ich die Logindaten an den Server?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| IdTCPClient1.Host := ...; IdTCPClient1.Port := 23; IdTCPClient1.Connect; if not (IdTCPClient1.Connected) then begin showmessage('es konnte keine Verbindung aufgebaut werden!'); exit; end;
IdTCPClient1.SendCmd('USER ' + 'username'); IdTCPClient1.SendCmd('PASS ' + 'password'); JvMemo1.Lines.Add(IdTCPClient1.IOHandler.ReadLn); |
Danke für eure Hilfe
Andy
Moderiert von
Martok: Delphi-Tags hinzugefügt
realAndy - Mo 16.01.12 17:03
ich habe jetzt versucht die Telnet Verbindung mit der Komponente IdTelnet herzustellen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| IdTelnet1.Host := '....'; IdTelnet1.Port := 23; IdTelnet1.Connect; IdTelnet1.SendCmd('username'); IdTelnet1.SendCmd('passwort'); ... |
Nach einiger Zeit kommt dann allerdings immer noch die Meldung "Connection Closed Gracefully".
Wie muss ich die Logindaten an den Server schicken und wie kann ich herausfinden ob das Login erfolgreich war?
Ich hoffe ihr könnt mir weiterhelfen :)
Moderiert von
Narses: Delphi-Tags hinzugefügt
realAndy - Di 17.01.12 10:06
hmm, kann mir keiner Weiterhelfen?
Es muss doch möglich sein mit Delphi 2010 eine Telnet Verbindung aufzubauen bei welcher Loginname und PW übergeben werden müssen.
Nur wie kann ich die Logindaten übergeben?
Narses - Di 17.01.12 12:26
Moin!
Hm, wie man das mit D2010 und möglicherweise Indy10 macht, weiß ich nicht. :nixweiss:
Aber da bisher keiner was beizutragen hatte: ich habe mal in meinem QT-Archiv gewühlt, irgendwann hatte ich auch mal was mit der IdTelnet-Kompo zu tun, allerdings D7pro und Indy9... :?
Hier mal so im Groben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85:
| type TConnectionTask = ( ctDisconnect, ctQuery );
TMainForm = class(TForm) LC: TIdTelnet; edHost: TEdit; edPassword: TEdit; BtnQuery: TButton; BtnDisconnect: TButton; procedure LCDataAvailable(Sender: TIdTelnet; const Buffer: String); procedure LCConnected(Sender: TObject); procedure BtnQueryClick(Sender: TObject); procedure BtnDisconnectClick(Sender: TObject); procedure FormCreate(Sender: TObject); private FConnectionTask: TConnectionTask; FReceiveBuffer: String; procedure SetConnectionTask(const Value: TConnectionTask); public property ConnectionTask: TConnectionTask read FConnectionTask write SetConnectionTask; end;
var MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.LCConnected(Sender: TObject); begin LC.WriteLn(edPassword.Text); case FConnectionTask of ctQuery: begin LC.WriteLn('dir /st/conn'); LC.WriteLn('dir /st/wa/th'); end; ctDisconnect: LC.WriteLn('do /o/m/d'); end; LC.WriteLn('exit'); end;
procedure TMainForm.LCDataAvailable(Sender: TIdTelnet; const Buffer: String); begin FReceiveBuffer := FReceiveBuffer +Buffer; if (NOT Sender.Connected) then if (FConnectionTask > ctDisconnect) then with TStringList.Create do try CommaText := UpperCase(FReceiveBuffer); while ( (Count > 0) and (Strings[0] <> 'DSL-CH-1') ) do Delete(0); if (Count >= 6) then begin edConTime.Text := Strings[5]; Delete(0); end; while ( (Count > 0) and (Strings[0] <> 'DSL-CH-1') ) do Delete(0); if (Count >= 4) then edAvgRx.Text := Strings[3]; finally Free; end; end;
procedure TMainForm.SetConnectionTask(const Value: TConnectionTask); begin FConnectionTask := Value; FReceiveBuffer := ''; LC.Connect; end;
procedure TMainForm.BtnQueryClick(Sender: TObject); begin ConnectionTask := ctQuery; end;
procedure TMainForm.BtnDisconnectClick(Sender: TObject); begin ConnectionTask := ctDisconnect; end; |
Irgendwas habe ich damals mit meinem Router veranstaltet, frag mich nicht was... :hair: Hat aber geklappt. ;)
cu
Narses
realAndy - Mi 18.01.12 12:07
Danke für die Antwort :)
Aber irgend wie will das bei mir mit Indy10 nicht laufen.
Ich hab jetzt Overbyte ICS genommen und schon geht alles.
Mich würde trotzdem interessieren, wie man das ganze unter Delphi 2010 mit Indy10 hinbekommt.
Viele Grüße
Andy
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!