2016-01-30 2 views
0

В настоящее время я пытаюсь выполнить некоторую сетевую кодировку для приложения android (java), и у меня возникли некоторые проблемы. Я использую библиотеку Apache commons.net, чтобы установить ftp-соединение с сервером, на котором я размещаю передачу файлов на Android-устройство. это мой код:Java ftp commons.net сетевое кодирование

public class Server { 
public static void main(String[] args) 
{ 
    String username = "Username"; 
    String password = "Password"; 
    String host = "AddressString"; 
    FTPSClient ftps; 
    ftps = new FTPSClient(); 
    System.out.println("trying to connect..."); 
    try{ 
     System.out.println("trying to connect..."); 
     ftps.connect(host, 21); 
     System.out.println("Connected"); 
     System.out.println("logging in..."); 
     ftps.login(username, password); 
     System.out.println("logged in!"); 
     ftps.enterLocalPassiveMode(); 

       catch (IOException ex) { 
        System.out.println("Error: " + ex.getMessage()); 
        ex.printStackTrace(); 
       } finally { 
       try { 
        if (ftps.isConnected()) { 
        System.out.print("LOggin out"); 
         ftps.logout(); 
         ftps.disconnect(); 
        } 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 

} 
    System.out.println("Terminated"); 
} 

} 

Программа никогда не будет принята линией «ftps.connect (хост, 21);», с ошибкой «Соединение закрыто без указания», я верю, я правильно настроил мой сервер так как я могу подключиться к нему через «Putty» из другой сети и т. д. Что мне здесь не хватает?

Примечание: я не пытаюсь подключиться через устройство Android, сейчас я использую eclipse для тестирования.

+0

Я был немного нетерпеливым, я думаю, что нашел проблему. Я новичок во всей сетевой вещи, и, похоже, я запутался в sftp с ftps, я не думаю, что sftp поддерживается этой библиотекой, поэтому я собираюсь попробовать JSch вместо этого. – Erik

ответ

0

«Я действительно верю, что правильно настроил свой сервер, так как я могу подключиться к нему через« Putty »из другой сети и т. Д. Что мне здесь не хватает?»

«замазки» утилита разговаривает с сервером SSH на порт 22 не к FTP-серверу на порт 21. Можно сказать, что базовая сеть соединения/маршрутизации, кажется, работает, но это не обязательно достаточно.

Возможные проблемы, которые вы можете иметь, включают:

  • порт FTP блокируется межсетевой экран на клиенте, на сервере или где-то между ними, или

  • FTP-сервер может быть настроен неправильно ,

Я заметил, что клиент пытается использовать FTP/S, но он использует порт по умолчанию для FTP (21) не FTP/S (991). Это не обязательно неверно (см. https://serverfault.com/questions/10807/what-firewall-ports-do-i-need-to-open-when-using-ftps), но, возможно, вам следует проверить, что ваш сервер настроен на поддержку явного FTP/S.

Я бы посоветовал:

  • посмотреть на логи сервера и на стороне клиента для ключей
  • временно включить «уровень отладки» журналирования (на стороне клиента & сервер)
  • посмотреть, если вы можете установить необработанное TCP-соединение на порту 21; например используя telnet <server-host> 21
  • попробуйте сменить клиента на использование FTP, а не FTP/S
  • Если все остальное не удается, попробуйте использовать сниффер пакетов для захвата сетевого трафика.

UPDATE

... кажется, я путать с SFTP FTPS ...

Да, они очень разные. SFTP в действительности FTP туннелируется через SSH-соединение. Для этого требуется клиентская библиотека, которая понимает SSH.

Итак, если вы пытаетесь использовать FTP-серверы и настройки FTP/FTPS для работы службы SSH (SFTP), вы, вероятно, терпите неудачу, поскольку порт 21 заблокирован (что должно быть, если нет службы FTP) или из-за отсутствия FTP-сервиса (который должен быть стандартным для типичного готового Linux-сервера).