я пытался получить файл с FTP-сервера, но каждый раз попробовать подключиться, используя мой код я получил ту же ошибку:idFTP + Время ожидания соединения
EIdSocketError: Socket Error # 10060 подключения время вышло.
с помощью Filezilla 3.4, можно подключить и загрузить файлы, мой код:
var
objFTP: TidFTP;
begin
try
objFTP := TIdFTP.Create;
try
objFTP.Disconnect;
objFTP.Host := '200.1.81.252';
objFTP.Port := 990;
objFTP.Username := 'user_name';
objFTP.Password := 'user_pass';
objFTP.Passive := True;
objFTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(objFTP);
objFTP.UseTLS := utUseRequireTLS;
objFTP.TransferTimeout := 120000;
try
objFTP.Connect;
objFTP.ChangeDir('/salida/acciones/2015-05-20');
objFTP.Get('SW052015.003', 'C:\SW052015.txt');
finally
objFTP.Disconnect;
end;
finally
FreeAndNil(objFTP);
end;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
какие-либо предложения?
конфигурации на FileZilla:
Authentication порт: порт передачи 990
данных: 9080 (не знаю, что это такое)
Шифрование: Требуется явный FTP через TLS
Passive режим
Force UTF-8
Вы проверили настройки брандмауэра? Тот факт, что FileZilla разрешено выполнять сетевую связь, не означает, что вашему приложению также разрешено выполнять сетевую связь. Многие брандмауэры допускают конфигурацию каждого приложения. – SilverWarior
Я не могу видеть правила брандмауэра (правила компании), но используя команду telnet 200.1.81.252 990 на cmd, я подключился к серверу. – GPGomes
Какая строка действительно создает исключение? Вызов 'Connect()', 'ChangeDir()' или 'Get()'? Это имеет большое значение. Кроме того, вы не должны вызывать 'Disconnect()', если 'Connect()' не удается в первую очередь. Кроме того, попробуйте использовать 'utUseExplicitTLS' вместо' utUseRequireTLS'. Также, если серверу требуется шифрование при передаче данных, вам необходимо установить свойство 'TIdFTP.DataPortProtection'' ftpdpsPrivate' (по умолчанию это 'ftpdpsClear' - без шифрования). –