Entwickler-Ecke

Internet / Netzwerk - "Connection Closed Gracefully"


alias5000 - So 12.03.06 02:27
Titel: "Connection Closed Gracefully"
Abend Leute!
Ich versuche jetzt schon länger krampfhaft es zu schaffen ein selbstgeschriebenes FTP-Server/Client Programm auf 2 Rechnern zum arbeiten zu bewegen.
Nach einigen kleingkeiten bin ich wieder auf mein lieblingsproblem gestoßen

"Connection Closed Gracefully"

Finde ich nett, dass mir Indy das automatisch trennt, bloß ist das blöd, dass das genau nach meinen idFTP1.Connect; eintritt, sodass ich sofort wieder rausgeworfen werde! Ports müssten eigentlich alle stimmen, IP-Adresse haut auch hin. PW und User dürften keine Rolle spielen, weil ich beim Server ins Ereignis OnUserLogin einfach generell alle authentifiziere.

Im Prinzip ist es egal, ob ich das Connect in ein try..except block packe oder nicht, aus der Verbindung fliege ich jedes mal wieder raus.

Wie verdammt nochmal kann das gescheit funktionieren???

Grüßle alias5000

PS.: Es dreht sich um Indy 9


digi_c - So 12.03.06 09:07

Funktioniert es denn wenn beides lokal läuft? Evtl. eine Firewall?

Poste mal relevanten Code/Einstellungen vom Server und dem Client.


alias5000 - So 12.03.06 10:48

Aso, ich war gestern abend recht genervt, weil ich dem login über 3h gesessen bin und sich fast nix bewegt hat.
Das ganze läuft ausschließlich nur im LAN. Das mit der Firewall teste ich gleich, ich weiß bloß, dass ich den Server in der Windows-Firewall freigeschalten habe. Auf dem anderen Rechner läuft Win98 ohne eine Firewall.
Ich habs jetzt mal mit komplett angeschalteter Firewall getestet, aber das hat auch nix gebracht.
Ich werd mal das ganze testen, wenn ich die Porteinstellungen wieder zurückschraube auf Prot 21 und so.
EDIT: wenn ich das tue, bekomme ich ein "Connection reset by peer" im Client, also gehe ich wieder auf die Ports, die garantiert frei sind.

Der Code folgt hier:

Die Procedure, die ausführt wird, damit sich der Client einloggt:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
if form2.IdFTP1.Connected then begin
  form2.IdFTP1.Quit;
end;
form2.IdFTP1.Host := Edit2.Text; //Ports sind im Objectinspector bereits festgelegt
//try
form2.IdFTP1.Connect;  //wenn ich try-except mit reinnehme, bleibt die Verbindung trotzdem nicht bestehen, sondern es folgt bei idFTP1.List eine AV
//except
//end;
form2.Label3.Caption := 'Logged in.';
if not idftp1.Connected then begin //nur um zu schauen, obs connected ist
  showmessage('nana');
end;
form2.IdFTP1.List(form2.ListBox1.Items);


So und jetzt beim Server, eigentlich ganz simpel:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.IdFTPServer1UserLogin(ASender: TIdFTPServerThread;
  const AUsername, APassword: stringvar AAuthenticated: Boolean);
begin
AAuthenticated := true;
ASender.HomeDir := '';
ASender.CurrentDir := '';
end;


Für OnConnect ist kein Event-Handler eingetragen, muss ich evtl. dort noch was machen?

Gruß alias5000


schlumpf070 - So 12.03.06 19:49


Delphi-Quelltext
1:
2:
ASender.HomeDir := '';  
ASender.CurrentDir := '';


^^ musst du soviel ich weiss die dirs angeben


Delphi-Quelltext
1:
2:
ASender.HomeDir := 'c:\ftp';  
ASender.CurrentDir := '/';


^^ bin mir aber nicht sicher

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt


alias5000 - So 12.03.06 20:16

ne ich hatte des mal zwischendurch getestet, daran hägts nicht. Komischerweise funktioniert ein älteres Projekt, das neue aber nicht. Der Loginvorgang und so sind praktisch genau gleich.