android:org.apache.commons.net.ftp.FTPConnectionClosedException: соединение закрыто без указания

Все, страдаю этой проблемой уже 4 дня.. нужна помощь...

Я занимаюсь разработкой программы для Android, которая намеревается загрузить файл на FTP-сервер.

Моя среда разработки: Ubuntu12.04 + Eclipse

Я хочу загрузить файл в сервис. Теперь услуга может быть успешно запущена. Вот код метода загрузки в классе обслуживания.

public String ftpUpload(String url, String port, String username,String password, 
        String remotePath, String filePath,String fileName) {       
    FTPClient ftpClient = new FTPClient();      
    FileInputStream fis = null;  
    String returnMessage = "0";  
    try{
        System.out.println("我看你能不能连接上!!!!");
        ftpClient.connect(url,21);        
        System.out.println("我草还真能连上!!!!!!");
        int reply = ftpClient.getReplyCode();
        if(!FTPReply.isPositiveCompletion(reply)){              
            ftpClient.disconnect();
            System.err.println("FTP server refused connection.");
            System.exit(1);
        }
        boolean loginResult = ftpClient.login(username, password);  
        int returnCode = ftpClient.getReplyCode(); 
        Log.v("returnCode",""+returnCode);
        System.out.println(loginResult);
        if(loginResult && FTPReply.isPositiveCompletion(returnCode)){               
            ftpClient.listFiles("");
            ftpClient.makeDirectory(remotePath);  
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
            ftpClient.changeWorkingDirectory(remotePath);  
            ftpClient.setBufferSize(1024);  
            ftpClient.setControlEncoding("UTF-8");                    
            fis = new FileInputStream(filePath+"/"+fileName);  
            ftpClient.enterLocalPassiveMode(); 
            System.out.println("last step!!!!!!");
            ftpClient.storeFile("IwantYou", fis);                  
            returnMessage = "1";         
        } 
        else 
            returnMessage = "0";                      
    }
    catch (IOException e){              
        e.printStackTrace();  
        throw new RuntimeException("擦,还真没连上!!!",e);  
    } 
    finally{            
        try{                
            ftpClient.disconnect();  
        } 
        catch(IOException e){               
            e.printStackTrace();  
            throw new RuntimeException("关闭FTP连接发生异常!", e);  
        }  
     }  
     return returnMessage;  
}  

вот проблемы:

тест на устройстве Android: успешно

тест на эмуляторе

  1. если эмулятор и FTP-сервер не находятся на одном компьютере: успешно

  2. если эмулятор и FTP-сервер находятся на одном компьютере: сбой

так что давайте сосредоточимся на этом случае.. и несколько разных вариантов бывает

  1. если я подключаю реальный IP-адрес (10.238.154.173), исключение происходит при методе подключения, вот logcat:

    W/System.err( 1074): org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
    W/System.err( 1074): at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:313)
    W/System.err( 1074): at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:290)
    W/System.err( 1074): at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:392)
    W/System.err( 1074): at  org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:764)
    W/System.err( 1074): at  org.apache.commons.net.SocketClient.connect(SocketClient.java:169)
    W/System.err( 1074): at org.apache.commons.net.SocketClient.connect(SocketClient.java:189)
    W/System.err( 1074): at com.example.hehe.FirstService.ftpUpload(FirstService.java:64)
    W/System.err( 1074): at com.example.hehe.FirstService$1.run(FirstService.java:36)
    W/System.err( 1074): at java.lang.Thread.run(Thread.java:841)
    I/System.out( 1074): something is wrong!
    W/System.err( 1074): java.lang.RuntimeException: 擦,还真没连上!!!
    W/System.err( 1074): at com.example.hehe.FirstService.ftpUpload(FirstService.java:94)
    W/System.err( 1074): at com.example.hehe.FirstService$1.run(FirstService.java:36)
    W/System.err( 1074): at java.lang.Thread.run(Thread.java:841)
    W/System.err( 1074): org.apache.commons.net.ftp.FTPConnectionClosedException: Connection closed without indication.
    W/System.err( 1074): at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:313)
    W/System.err( 1074): at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:290)
    W/System.err( 1074): at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:392)
    W/System.err( 1074): at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:764)
    W/System.err( 1074): at org.apache.commons.net.SocketClient.connect(SocketClient.java:169)
    W/System.err( 1074): at org.apache.commons.net.SocketClient.connect(SocketClient.java:189)
    W/System.err( 1074): at com.example.hehe.FirstService.ftpUpload(FirstService.java:64)
    W/System.err( 1074):    ... 2 more
    
  2. если я подключаю IP(10.0.2.2), я могу подключиться успешно. Но метод storefile не удался.

Я погуглил его несколько дней, все не получилось.

Любое предложение может быть оценено! Спасибо!

0 ответов

Другие вопросы по тегам