Hallo,
Ich versuche gerade mit Hilfe der TIdFTP Komponente (Version 10 in Delphi 2010) eine Verbindung über IPv6 zu einem FTP Server zu erstellen, um dann eine Datei zu transferieren. Das connecten scheint auch zu funktionieren, will ich dann aber eine Datei vom Server herunter- oder heraufladen bekomme ich im Passive Mode folgende Exception:
Zitat: |
"You are connected using Ipv6. PASV is only for Ipv4. You have to use the EPSV command instead." |
Setze ich den Passive Mode auf False erhalte ich eine andere Exception:
Zitat: |
„“FE80:0:0:0:xxxx:xxxx:xxxx:xxxx“ is not a valid integer value“ |
Als FTP-Server verwende ich FileZilla (Version 0.9.41) welcher auf Port 21 hört. Habe es aber auch schon erfolglos mit anderen Ports versucht. Firewalls sind auch nicht aktiv.
Wenn ich das gleiche mit einem bestehenden FTP-Client veruche (z.B. FileZilla oder Total Commander) funktioniert der Datentransfer problemlos, sowohl im aktiv wie im passiv modus für GET und PUT.
Hier mein Code:
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:
| try FIdFTP := TIdFTP.Create(nil); FURL := TIdURI.Create();
try FURL.URI := edURI.Text;
TIdFTP(FIdFTP).ConnectTimeout := 60 * 1000; TIdFTP(FIdFTP).TransferType := ftBinary;
if FURL.Username <> '' then begin TIdFTP(FIdFTP).Username := FURL.Username; TIdFTP(FIdFTP).Password := FURL.Password; end;
TIdFTP(FIdFTP).Host := FURL.Host; TIdFTP(FIdFTP).IPVersion := FURL.IPVersion;
TIdFTP(FIdFTP).Passive := True;
TIdFTP(FIdFTP).Connect();
FPWorkerFile := PChar(FWorkerFileName); TIdFTP(FIdFTP).Get( FURL.Document, FPWorkerFile, False );
TIdFTP(FIdFTP).Disconnect;
finally FreeAndNil(FIdFTP); FreeAndNil(FURL); end;
except on e : Exception do ShowMessage( 'Exception - ' + e.Message ) end; |
Scheint mir ein Problem mit der Indy-Komponente zu sein welche IPv6 noch nicht so richtig handhabt. Denn versuche ich das ganze mit der IPv4 Adresse des Servers, funktioniert es.
Bin um jede Hilfe dankbar,
middel86