| Autor |
Beitrag |
Fighter#1
      
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
|
Verfasst: 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
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 27.12.05 22:51
|
|
Fighter#1 
      
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
|
Verfasst: 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
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 27.12.05 23:04
Moin!
Sorry, aber wenn du mit RFCs nicht klar kommst, dann nimm die Indies...
cu
Narses
|
|
Mr_Sven
      
Beiträge: 38
D7 Prof., C# (VS 2008)
|
Verfasst: Di 27.12.05 23:09
Du slltest dir die Source Files von TIdFTP anschauen:
IdFTP.pas
IdFTPCommon.pas
Gruß Sven
|
|
Fighter#1 
      
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
|
Verfasst: 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
      
Beiträge: 460
Win XP, Win Vista Home Premium, Ubuntu Dapper Drake
Delphi 2005 Pers
|
Verfasst: 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 
      
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
|
Verfasst: 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
      
Beiträge: 210
Win XP Pro
Delphi 7 PE, D2005 Prof. SSL
|
Verfasst: 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 
      
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
|
Verfasst: 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
      
Beiträge: 133
Win XP
D5
|
Verfasst: 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 
      
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
|
Verfasst: 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
      
Beiträge: 35
Win XP
Delphi 7 Enterprise, C
|
Verfasst: 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:
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.
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 
      
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
|
Verfasst: 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
|
Verfasst: 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
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mi 05.04.06 23:23
Moin und  im Forum!
Xru 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.
Xru hat folgendes geschrieben: | | kann mir jemand einen Link geben wo ich genau das nachlesen kann? |
Guckst du hier.
--- hat nix mit dir zu tun, bitte nicht persönlich nehmen ---
Jetzt mal ernsthaft, müssen wir hier wirklich RFCs durchkauen... ?  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
|
Verfasst: Do 06.04.06 00:49
Naja ich hatte es falsch verstanden. Egal, funktioniert nun. 
|
|
caedes
      
Beiträge: 35
Win XP
Delphi 7 Enterprise, C
|
Verfasst: 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:
Fighter#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 
      
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
|
Verfasst: Do 06.04.06 14:16
Xru 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
|
|
|