Entwickler-Ecke

Internet / Netzwerk - Probleme mit IdFTP über Socks


Mr_Sven - Mo 08.11.04 12:18
Titel: Probleme mit IdFTP über Socks
Hi Leute,
ich habe ein Problem mit IdFTP und Socks.
Wenn ich eine Verbindung über Socks herstellen will, dann sieht das so aus:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
-->> 220 FTP Server ready.<EOL>
<<-- USER ********<EOL>
-->> 331 Password required for ********.<EOL>
<<-- PASS ********<EOL>
-->> 230 User ******** logged in.<EOL>
<<-- PWD<EOL>
-->> 257 "/" is current directory.<EOL>
<<-- PASV<EOL>
-->> 227 Entering Passive Mode (***,***,***,***,249,185).<EOL>


EIdSocketError
Socket-Fehler # 10061 Verbindung abgelehnt


Ich habe den Code so programmiert wie es im Indy Handbuch steht, aber es klappt nicht.
Hat irgentjemand eine Idee?

Gruß Sven

Zitat:

1. Create an IOHandler such as TIdIOHandlerSocket or TIdSSLIOHandlerSocket and assign the TIdFTP.IOHandler property this.

2. Set the TIdFTP.Passive property to true.

3. Create a TIdSocksInfo object and assign it to the IOHandler's SocksInfo property.

4. Set the TIdSocksInfo properties as required.


MAlsleben - Mo 08.11.04 13:43

Hi,

ich habe ein ähnliches Problem. Das liegt aber schlußendlichbei mir nicht an Indy. Wenn man mit FTP über eine Firewall geht, kann es sein, das diese Firewall per Socks nur passives FTP unterstützt. Dann muß dies natürlich auch bei dem externen FTP- Server sauber funktionieren. Und genau darin besteht das Problem. Der FTP- Server gibt dann seine IP- Adresse und den Port nach Umschalten in den passiven Modus an den Client zuück. Diese Information liegt aber nicht im Header des Datenpacketes sondern normal im Datenbereich. Wenn der FTP-Server ebenfalls hinter einer Firewall steht und dem Client seine private IP-Adresse übergibt, dann läuft das natürlich vorn Baum. Das bedeutet, die Firewall setzt dies nicht um.
Das steht in dem Teil, den Du mit *** überschrieben hast. Oder was auch noch sein kann, das der mitgesendete Port nicht in der Firewall des Servers freigegeben ist. Hier müßte der Serverbetreiber einen festen Port für passives FTP vorgeben und in der Firewall freigeben.

So einfach wie FTP auf den ersten Blick schein ist es bei tieferen Hinsehen leider doch nicht.

Gruß Micha.


Mr_Sven - Mo 08.11.04 14:04

Hi,

ähm, also müsste es eigentlich funktionieren, es liegt also dann an der Firewall?
Und ist dann sozusagen, normales systemverhalten, dass diese Fehlermeldung kommt?

Gruß Sven


wulfskin - Mo 08.11.04 14:50

Hast du mal das Indybeispiel ausprobiert? Klappt es damit? Solltest du auf jedenfall davor ausprobieren, damit du sichersein kannst, dass der Fehler nicht bei dir selber liegt!

GRuß hApe!


Mr_Sven - Mo 08.11.04 22:37

Jupp habe ich schon, da is aber kein Socks in dem Indy beispiel.

Liegt aber an den Socks-Server Einstellungen in unserer Firma.

Gruß Sven


MAlsleben - Di 09.11.04 15:26

Hi,

in meinem Fall war es so, das es am fremden FTP-Server bzw. an der Firewall lag, hinter dem der FTP Server stand. Probier doch mal einen anonymen Connect zu http://ftp.cdrom.com zu bekommen . Das hat zumindest bei mir geklappt.

Gruß Micha.


Mr_Sven - Di 09.11.04 17:35

Ne, liegt dann wohl doch an der
Lokalen Firewall, denn das programm bleibt einfach hängen.

Gruß Sven

PS: habe nen Bug in Indy 9 gefunden: http://www.delphi-forum.de/topic_Bug+bei+Indy+9+und+IdFTP_32407.html