![]() |
TIdFTP List Befehl unter Vista?
Hallo,
ich habe das Problem, dass meine TIdFTP Komponente unter Vista ewig auf ein Ergebnis bei der Funktion "List" wartet. Ich konnte die Zeile lokalisieren wo er ewig wartet. In der Unit idTCPClient der Indys:
Delphi-Quellcode:
Was ich interessant finde: Ein paar Zeilen obendran wird eine IP-Adresse und ein Port zugewiesen.
procedure TIdTCPClientCustom.Connect;
begin // Do not call Connected here, it will call CheckDisconnect EIdAlreadyConnected.IfTrue(Connected, RSAlreadyConnected); if IOHandler = nil then begin IOHandler := MakeImplicitClientHandler; IOHandler.OnStatus := OnStatus; ManagedIOHandler := True; end; try // Bypass GetDestination if FDestination <> '' then begin IOHandler.Destination := FDestination; end; {BGO: not any more, TIdTCPClientCustom has precedence now (for port protocols, and things like that) // We retain the settings that are in here (filled in by the user) // we only do this when the iohandler has no settings, // because the iohandler has precedence if (IOHandler.Port = 0) and (IOHandler.Host = '') then begin IOHandler.Port := FPort; IOHandler.Host := FHost; end; } IOHandler.Port := FPort; //BGO: just to make sure IOHandler.Host := FHost; if IOHandler is TIdIOHandlerSocket then begin TIdIOHandlerSocket(IOHandler).IPVersion := FIPVersion; end; if FConnectTimeout > 0 then begin IOHandler.ConnectTimeout := FConnectTimeout; end; if FReadTimeout > 0 then begin IOHandler.ReadTimeout := FReadTimeout; end; IOHandler.Open;//<---------- Hier hängt er!! if IOHandler.Intercept <> nil then begin IOHandler.Intercept.Connect(Self); end; DoStatus(hsConnected, [Host]); DoOnConnected; except IOHandler.Close; raise; end; end; Beide habe ich nirgenwo eingetragen, die IP-Adresse ist aus dem lokalen Netzwerk(192.168.115.20) und der Port ist immer unterschiedlich. |
Re: TIdFTP List Befehl unter Vista?
Schon mal die Vista-Firewall testweise ausgeschaltet?
|
Re: TIdFTP List Befehl unter Vista?
Ja testweise bei der Installation.. die ist aus :roll:
ich bin mal noch weiter in den Code rein. In der idStackWindows:
Delphi-Quellcode:
Seltsam ist ja, dass er beim erstenmal durchläuft mit der Adresse und dem Port vom Proxy und beim zweitenmal wo er das durchläuft hat er ne falsche IP und falschen Port.procedure TIdStackWindows.Connect(const ASocket: TIdStackSocketHandle; const AIP: string; const APort: TIdPort; const AIPVersion: TIdIPVersion = ID_DEFAULT_IP_VERSION); var LAddr: TSockAddrIn; Addr6: TSockAddrIn6; begin case AIPVersion of Id_IPv4: begin LAddr.sin_family := Id_PF_INET4; TranslateStringToTInAddr(AIP, LAddr.sin_addr, Id_IPv4); LAddr.sin_port := HToNS(APort); CheckForSocketError(IdWinsock2.Connect(ASocket, @LAddr, SizeOf(LAddr))); end; Id_IPv6: begin Addr6.sin6_flowinfo:=0; Addr6.sin6_scope_id:=0; Addr6.sin6_family := Id_PF_INET6; TranslateStringToTInAddr(AIP, Addr6.sin6_addr, Id_IPv6); Addr6.sin6_port := HToNs(APort); CheckForSocketError(IdWinsock2.Connect(ASocket, psockaddr(@Addr6), SizeOf(Addr6)));//Wenn ich hier einen Haltepunkt mache und dann F7 drücke hängts.. also vmtl die Zeile in der was bzw. nix passiert end; else begin IPVersionUnsupported; end; end; end; Edit: Der erste Durchlauf ist der TIdFTP.Connect, der Zweite TIdFTP.List Edit2: Ich hab mal geschaut wo er diese seltsame IP herbekommt. In der IdFTP:
Delphi-Quellcode:
procedure TIdFTP.SendInternalPassive(const ACmd: String; var VIP: string;
var VPort: integer); var i,bLeft,bRight: integer; s: string; begin SendDataSettings; SendCmd(ACmd, 227); {do not localize} s := Trim(LastCmdResult.Text[0]);//Hier wird die eingelesen und später zugewiesen |
Re: TIdFTP List Befehl unter Vista?
OK, also das Problem habe ich gefunden:
Wenn ich versuche von meinem Rechner hier aus eine passive Verbindung zu meinem FTP-Ordner aufzubauen, dann bekomm ich ewig keine Antwort. Bei FileZilla funktioniert es passiv auch nicht, allerdings macht es dann auf aktiv und dann geht es. Was muss ich jetzt alles machen damit mein eigener Client auch aktiv kann? Nur das Flag setzen wird wohl nicht genügen oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz