Autor Beitrag
Fighter#1
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Di 27.12.05 22:47 
Hallo Leute,
Ich hab zwar schon ein FTP Prog mit Indy, möchte aber wissen wie
ich mit den Sockets mit nem FTP Server kommuniziere!
ich geb als Host einfach mal ftp.meinserver.de ein und als Port 21
dann erhalt ich den String : 220 Willkommen. FTP Server ready.
Super!
Und wie gehn jetzt die Befehle??
Mit Socket.SendText() ist da nicht viel!!!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 27.12.05 22:51 
Moin!

Guckst du www.faqs.org/rfcs/rfc959.html

cu
Narses
Fighter#1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Di 27.12.05 22:55 
Komm mir bitte nicht mit RFCs daraus werd
ich nicht schlau :-( ich meine, wenn ich auch einen
RFC befehl hinsende kommt nix zurück!
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 27.12.05 23:04 
Moin!

Sorry, aber wenn du mit RFCs nicht klar kommst, dann nimm die Indies... :roll: :wink:

cu
Narses
Mr_Sven
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D7 Prof., C# (VS 2008)
BeitragVerfasst: Di 27.12.05 23:09 
Du slltest dir die Source Files von TIdFTP anschauen:
IdFTP.pas
IdFTPCommon.pas

Gruß Sven
Fighter#1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Fr 30.12.05 18:36 
Also es ist nicht so das ich nicht weiß was in der RFC drin steht
aber ich möchte wissen, wie kann ich die Befehle an den Server senden?
mit SentText() ... ist da nicht.
Gibts da ne möglichkeit, wie sendcommand ...??
andras
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 460

Win XP, Win Vista Home Premium, Ubuntu Dapper Drake
Delphi 2005 Pers
BeitragVerfasst: So 05.03.06 17:17 
www.delphi-total.de/tutorials/?cat=7
schau dir das tutorial über die indy-kompos an. da steht auch was über die ftp-komponente drin.
Fighter#1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Mo 06.03.06 18:37 
Jaja...
Indy kann ja jeder ;-) mir gings da ganz speziell um die Sockets.
Wer das mit den Indys nicht hinkriegt ..., ohoh da seh ich *dunkel*.
In den Sockets sieht man ja das ganze Protokoll, und das ist es ja was mich interessiert.
Nicht das ich da IdFtpClient1.DownloadFile... eingebe.
Das kann ich mir aus dem Internet bei dsdt ziehn, gut für anfänger sind indys super und wenn schnell was machen will auch super . Aber ich will sehen was passiert.
Trotzdem Danke

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Benutzername
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 210

Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
BeitragVerfasst: Mo 06.03.06 19:24 
Wieso solltest du die Methode SendTextnicht verwenden können?
Du musst doch einfach die Kommandos senden wie get, put, dir, mkdir etc. und dann auswerten, was zurückkommt.
Die FTP-Kommandos rauszukriegen sollte kein Problem sein, geht ja sogar mit Windows-Bordmitteln ohne RFCs ;)
Fighter#1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Mo 06.03.06 19:27 
Ja, ich muss mich aber z.B. Anmelden, auf USER *** PASSWORD *** reagiert der leider nicht

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
blaueled
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 133

Win XP
D5
BeitragVerfasst: Mo 06.03.06 19:54 
Hallo,

ist das nicht
USER ****** (wegschicken)
Antwort erhalten, dann
PASS ****** (wegschicken)
Antwort, dass du eingeloggt bist ....

Arne
Fighter#1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Mo 06.03.06 20:33 
Ich kriege keine Antwort, egal was ich sende

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
caedes
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 35

Win XP
Delphi 7 Enterprise, C
BeitragVerfasst: Fr 31.03.06 12:29 
Es funktionert mit socket.sendtext! Es ist jedoch so, dass solche Protokolle ein Befehlsende/Zeilenende erwarten. Im Falle des FTP würde das dann z.B. so aussehen:
ausblenden Delphi-Quelltext
1:
2:
3:
clientsocket1.socket.sendtext('USER abc'+#13+#10);
clientsocket1.socket.sendtext('PASS xyz'+#13+#10);
clientsocket1.socket.sendtext('FEAT'+#13+#10);

Natürlich nicht alles hintereinander ausführen, sondern erst die Antworten verarbeiten.

Übrigens: Wie genau die Kommunikation über FTP handelt kannst du dir doch einmal anschauen, indem du z.B. bei FileZilla das Befehlsfenster durchliest.

Noch ein Hinweis zum Schluss:
Das FTP ist ein "Out-Of-Band" Protokoll, d.h. das auf Port 21 nur die Dateinamen usw. vereinbart werden und die eigentlichen Daten auf einem neuen Port verschickt werden.
ausblenden Quelltext
1:
227 Entering Passive Mode (214,178,73,132,160,148)					

Wenn der Server dies sendet, weiß der Client, dass er die Daten and die IP 214.178.73.132 senden muss und dazu der Port 2708 (160*16 + 148) serverseitig geöffnet wurde.
Fighter#1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Mo 03.04.06 17:59 
VIELEN DANK!
Funktioniert soweit super!

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse
Xru
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 05.04.06 23:03 
Guten Abend :)

Ich hoffe ihr könnt mir da weiter helfen. Ich verstehe das irgendwie nicht so ganz.

Also die ausgabe des LIST-Befehls bewirkt, das der Server eine Verbindung zu mir aufbaut und etwas schickt. Wohin er aufbauen soll sage ich ihm mit PORT ip,ip,ip,ip,port,port z.B. PORT 84,172,133,236,160,148. Um nun wirklich etwas empfangen zu können benötige ich doch nur nen ServerSocket wo auf angegeben PORT hört, oder?

Habe ich da irgendwo einen Denkfehler? Bzw. kann mir jemand einen Link geben wo ich genau das nachlesen kann? Irgendwie bekomme ich keine Verbindung von Server zu mir aufgebaut.

*verzweifel*

lg und danke schonmal für eure antworten
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 05.04.06 23:23 
Moin und :welcome: im Forum!

user profile iconXru hat folgendes geschrieben:
Um nun wirklich etwas empfangen zu können benötige ich doch nur nen ServerSocket wo auf angegeben PORT hört, oder?

Ja, sofern du den Server nicht in den passiven Modus geschaltet hast.

user profile iconXru hat folgendes geschrieben:
kann mir jemand einen Link geben wo ich genau das nachlesen kann?

Guckst du hier. :roll: :mahn:

--- hat nix mit dir zu tun, bitte nicht persönlich nehmen ---

Jetzt mal ernsthaft, müssen wir hier wirklich RFCs durchkauen... ? :gruebel: Es gibt kostenlose Referenzimplementationen mit Delphi-Quelltext (Indies) und die RFCs selbst. IMHO sollte das genügen; wer´s damit nicht auf die Kette kriegt, sollte die Indies binär verwenden, die anderen werden´s wohl schaffen. :| Sorry, aber alles was hierbei rauskommt, sind halb-kaputte FTP-Clones... und damit wird das Standard-Protokoll immer wässriger. :?

cu
Narses
Xru
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 06.04.06 00:49 
Naja ich hatte es falsch verstanden. Egal, funktioniert nun. :)
caedes
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 35

Win XP
Delphi 7 Enterprise, C
BeitragVerfasst: Do 06.04.06 02:15 
@Narses:

Man wird doch wohl noch üben dürfen. Wenn ich das Programm für einen kommeziellen Zweck einsetzen wollte würde ich natürlich auch die Indies o.ä. verwenden, aber wenn man doch nur einmal nachvollziehen will, wie die Protokolle arbeiten, ist es doch wohl legitim es mit den Sockets aufzubauen.
Über das andere kann und wird sich hier ja genauso aufgeregt, wenn irgendjemand an der Verwendung der gekapselten Indies scheitert, weil er die einfachsten Dinge, die dahinter stehen nicht ansatzweise verstanden und nur mit irgendwelchen Prozeduren, die er gefunden hat, im trüben fischt. Es kommt dann auch mit den Indies kein vernünftiger Code bei heraus, wenn man die Grundlagen nicht kann.
Wie oft hatten wir schon die Frage, warum beim Senden etwas "verloren" geht und bei nächsten Reiceive dann einfach wieder mit "auftaucht"? Dafür muss man einfach mal etwas von Protokollen gehört haben und etwa wissen, was bei der Übertragung genau passiert.

Die Kritik bitte nicht derart ernst nehmen. Wollte das nur einmal gesagt haben, besonders, weil dies ja auch des Thread-Öffners Intention war:

user profile iconFighter#1 hat folgendes geschrieben:
Jaja...
Indy kann ja jeder ;-) mir gings da ganz speziell um die Sockets.
...
In den Sockets sieht man ja das ganze Protokoll, und das ist es ja was mich interessiert.
Nicht das ich da IdFtpClient1.DownloadFile... eingebe.
Das kann ich mir aus dem Internet bei dsdt ziehn, gut für anfänger sind indys super und wenn schnell was machen will auch super . Aber ich will sehen was passiert.
Trotzdem Danke
Fighter#1 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 787

Win XP, Ubuntu 8.04
Turbo Delphi 2006, Delphi 2005 Pe, Delphi 5 Pe, Netbeans 6.1, Eclipse, Microsoft VisualC#, Dev C++, PHP, HTML, CSS
BeitragVerfasst: Do 06.04.06 14:16 
user profile iconXru hat folgendes geschrieben:
Naja ich hatte es falsch verstanden. Egal, funktioniert nun. :)


Wie funktioniert das bei dir?
In welcher Reihenfolge schickst du die Befehle ab, wann öffnest du den Server?

_________________
Wer andere beherrscht ist stark,
wer sich selbst beherrscht ist mächtig. Lao Tse