Я использую ftp4j для FTP-соединения через апплет для загрузки файла.С сервера я уже открываю FTP-сайт с портом 27, targetURL = локальный IP-адрес 192.168.x.xxx и предоставляю доступ для имени пользователя FTPUser, пароля xxxx.
FTPClient client = new FTPClient();
client.connect(targetURL, port);
client.setType(client.TYPE_BINARY);
client.login(user, password);
fis = new FileInputStream(targetFile);
client.upload(targetFile);
Он успешно подключается и загружает файлчерез апплет, во внутренней сети
Однако, когда я пытаюсь провести тестирование с внешней сетью, маршрутизатор уже настроен с помощью NAT для преобразования локального IP-адреса во внешний IP-адрес: 175.136.xxx.xxx с портом 47027 (уже протестированFTP-соединение с использованием команды), я получил это сообщение об ошибке:
user: FTPUser, password: xxxx port 47027
network: Connecting http://175.136.xxx.xxx:47027/ with proxy=DIRECT
network: Connecting http://175.136.xxx.xxx:20459/ with proxy=DIRECT
it.sauronsoftware.ftp4j.FTPException [code=425, message= Can't open data connection.]
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2658)
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2539)
at it.sauronsoftware.ftp4j.FTPClient.upload(FTPClient.java:2410)
Как из журнала ошибок, он пытался установить соединение через порт 47027, затем после этого изменить на 20459 (что я не знаю,откуда он берется).
Я вижу, что файл создан на FTP-сайте сервера, но с 0 байтами.
Кто-нибудь знает, что не так в этой ситуации?