java.net.SocketException: Software caused connection abort: socket write error
Opté por cambiar de manejador de FTP y utilicé la librería "ftp4j", con los mismos resultados.
De tal forma que pensé que el problema podía ser el servidor de FTP que he estado utilizando "Filezilla FTP Server" y lo cambie por otro, pero el error persistía, así que después de mucho investigar caí en cuenta que el error se encontraba en la versión de JDK que estaba utilizando (actualmente JDK 1.7), compile mi código con la versión JDK 1.6 y funciono de maravilla.
Conclusión: El JDK 1.7 tiene un bug en el manejo de sockets, por el momento será mejor utilizar el JDK 1.6 que parece ser una versión estable.
El código fuente utilizado para esta prueba fue:
package ftpTest;
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
public class FtpEjemplo {
public static void main(String[] args) {
FTPClient f = new FTPClient();
try {
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX); //Este objeto nos
f.configure(conf); //permite configurar opciones de conexion como idioma y sistema de archivos
f.connect("192.168.10.1"); // ip del servidor ftp
f.login("username", "password"); // usuario y password para conectarnos al ftp
f.changeWorkingDirectory("/"); // Cambiamos de la raiz al subdirectorio uno
FTPFile[] files = f.listFiles("/"); // Obtiene los archivos del servidor y los mostramos
System.out.println(f.isConnected());
for (FTPFile arch : files) {
System.out.println(arch.toString());
}
f.disconnect();
System.out.println(f.isConnected());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
import java.io.IOException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
public class FtpEjemplo {
public static void main(String[] args) {
FTPClient f = new FTPClient();
try {
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX); //Este objeto nos
f.connect("192.168.10.1"); // ip del servidor ftp
f.login("username", "password"); // usuario y password para conectarnos al ftp
f.changeWorkingDirectory("/"); // Cambiamos de la raiz al subdirectorio uno
FTPFile[] files = f.listFiles("/"); // Obtiene los archivos del servidor y los mostramos
System.out.println(f.isConnected());
for (FTPFile arch : files) {
System.out.println(arch.toString());
}
f.disconnect();
System.out.println(f.isConnected());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}