FTP - Criando um cliente FTP

Pessoal, estou montando um projeto que tenho uma classe para cadastro de usuário, nesse cadastro eu tenho a opçao de adicionar fotos, eu pensei em fazer o upload de fotos para um servidor remoto via FTP.
achei umas classes para conexao, e bibliotecas do apache.

Os erros que eu tenho é que não consigo enviar nenhum arquivo para o servidor, eu peguei um da internet e testei, achei foi até aqui no fórum

“” O ENGRAÇADO É QUE DA SEMPRE O MESMO ERRO EM QUALQUER TESTE DE TRANSFERENCIA FTP (LN 9)

java.net.SocketException: Software caused connection abort: recv failed

a saida do netbeans


run:
Tentando conectar ao servidor noads.biz:21
Autenticando FTP...
Criando diretório: /
Entrando no diretório: /
-> Block transfer mode
-> Bin mode
Executando upload...
java.net.SocketException: Software caused connection abort: recv failed
Fechando sessão...
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:150)
	at java.net.SocketInputStream.read(SocketInputStream.java:121)
	at java.io.BufferedInputStream.read1(BufferedInputStream.java:273)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:334)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
	at org.apache.commons.net.telnet.TelnetInputStream.__read(TelnetInputStream.java:114)
	at org.apache.commons.net.telnet.TelnetInputStream.run(TelnetInputStream.java:535)
	at java.lang.Thread.run(Thread.java:722)
java.net.SocketException: Software caused connection abort: socket write error
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:153)
	at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
	at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
	at org.apache.commons.net.telnet.TelnetClient._flushOutputStream(TelnetClient.java:77)
	at org.apache.commons.net.telnet.TelnetOutputStream.flush(TelnetOutputStream.java:137)
	at java.io.FilterOutputStream.flush(FilterOutputStream.java:140)
	at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:297)
	at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141)
	at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229)
	at java.io.BufferedWriter.flush(BufferedWriter.java:254)
	at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:442)
	at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:520)
	at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:569)
	at org.apache.commons.net.ftp.FTP.quit(FTP.java:781)
	at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:706)
	at sistema.TransferenciaFTP.doUpload(TransferenciaFTP.java:57)
	at sistema.TransferenciaFTP.main(TransferenciaFTP.java:68)
CONSTRUÍDO COM SUCESSO (tempo total: 6 segundos)

E A CLASSE


   package sistema;
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStream;
import org.apache.commons.net.ftp.FTP;  
import org.apache.commons.net.ftp.FTPClient;  
  
public class TransferenciaFTP {  
      
    public static boolean doUpload(  
            File file,  
            String host,  
            int port,  
            String dir,  
            String nome,  
            String username,  
            String password) {  
          
        InputStream in = null;  
          
        FTPClient ftp = new FTPClient();  
          
        try {  
            in = new FileInputStream(file);  
              
            System.out.println("Tentando conectar ao servidor " + host + ":" + port);  
            ftp.connect(host, port);  
              
            System.out.println("Autenticando FTP...");  
            ftp.login(username, password);  
              
            System.out.println("Criando diretório: " + dir);  
            ftp.makeDirectory(dir);  
              
            System.out.println("Entrando no diretório: " + dir);  
            ftp.changeWorkingDirectory(dir);  
              
            System.out.println("-> Block transfer mode");  
            ftp.setFileTransferMode(FTP.BLOCK_TRANSFER_MODE);  
            System.out.println("-> Bin mode");  
            ftp.setFileType(FTP.BINARY_FILE_TYPE);  
            System.out.println("Executando upload...");  
            ftp.storeFile(nome, in);  
            System.out.println("Upload concluído");  
              
            return true;  
              
        } catch (Exception e) {  
            e.printStackTrace();  
            return false;  
              
        } finally {  
           
            try {  
                System.out.println("Fechando sessão...");  
                ftp.logout();  
                System.out.println("Desconectando...");  
                ftp.disconnect();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
      
    public static void main(String[] args) {  
        String filename = "D:\\a.txt";  
        doUpload(new File(filename), "noads.biz", FTP.DEFAULT_PORT, "/", filename, "tonelotos.xp3.biz", "********");  
    }  
}  

eu sei que a pergunta é meio besta, mas já que vc está no Windows vou fazer assim mesmo

vc verificou se o Windows Firewall está ativo, ou barrando a transferência ?

lembrando que FTP usa as portas 20 e 21 do servidor