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: успешно
тест на эмуляторе
если эмулятор и FTP-сервер не находятся на одном компьютере: успешно
если эмулятор и FTP-сервер находятся на одном компьютере: сбой
так что давайте сосредоточимся на этом случае.. и несколько разных вариантов бывает
если я подключаю реальный 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
если я подключаю IP(10.0.2.2), я могу подключиться успешно. Но метод storefile не удался.
Я погуглил его несколько дней, все не получилось.
Любое предложение может быть оценено! Спасибо!