Java ed FTP

di Anonimizzato12915 il
11 risposte
Salve a tutti, cerco di esporvi il mio problema.
Sono alle prime armi,ho creato un server ftp tramite filezilla, tutto ok...riesco a vedere file,caricare e scaricare file sia tramite filezilla client che tramite linea di comando.
Ora volevo integrare questi funzionamenti in un app java,per iniziare;
QUindi ho letto della libreria ftp4j ed ho buttato giù tre linea di codice...
public ClientForlenza() {
		
	//dichiaro un client
	FTPClient client = new FTPClient();
	//connetto
	try{
	client.connect("******.no-ip.biz");
	client.login("****","****");
	client.changeDirectory("rec aom");
	FTPFile[] list = client.list();
	
	
	}
    catch(Exception e){
    	e.printStackTrace();
    }

	}
Il risultato?Questo...
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at sun.nio.cs.StreamDecoder.read0(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
Sapete aiutarmi?Grazie anticipatamente.

11 Risposte

  • Beh intanto cerca di capire dove avviene l'errore
    (se in fase di login piuttosto che in change directory etc)
    sembra che il server rifiuti la connessione FTP, indi prova con qualche programma sniffer tipo wireshark o fiddler per vedere il perché di questo errore tramite i pacchetti che vengono inviati al server visto che il vero errore apparirà sicuramente a livello di pacchetto, quidi le loro intestazioni e vedi il problema.

    Ciao.
  • No la connessione avviene ed anche il change directory il problema sta quando provo a vedere i file tramite listnames oppure quando provo a caricare o scaricare qualcosa.
  • Hai provato a vedere le intestazione dei pacchetti con i programmi che ti ho detto?
    con questo errore qui
    java.net.SocketException: Connection reset
    difficilmente qualcuno ti può aiutare, praticamente non dice nulla...


    P.S.
    ho letto adesso che il problema potrebbe essere un problema di autorizzazioni.
    Leggi questi articoli e vedi se va...
    http://stackoverflow.com/questions/10166337/ftp-error-while-downloading-uploading-with-ftp4j-library-in-java-application
    http://stackoverflow.com/questions/8333797/ftpclient-uploading-file-socketexception-connection-reset

    Ciao
  • Come faccio a vedere i pacchetti?
  • Te l'ho scritto prima...
    " indi prova con qualche programma sniffer tipo wireshark o fiddler......"

    cmq ti consiglio di seguire i commenti del forum stackoverflow che dovrebbero riguardre il tuo problema.
  • Ti ringrazio per quelle due pagine,non so come ma ora riesco a visualizzare il contenuto del server,l'unico problema è che quando provo a fare un upload mi dice it.sauronsoftware.ftp4j.FTPException [code=550, message= Permission denied][/b]. Mi chiedo :"Può darsi che mi da quest errore perchè le cartelle sono in sola lettura?".
  • Hai fatto una domanda e ti sei dato una risposta.
    Penso di si.
  • Ti ringrazio tantissimo,ho lavorato un pò con la modalità passiva ed ora funziona tutto.Ho implementato molto codice,ora sono arrivato quasi alla fine ,devo far in modo che un utente possa salvare un file che è presente nella directory su server,quindi pensavo di usare un JFileChooser...però non so cosa passargli come path...
    JFileChooser fc=new JFileChooser(Client.CurrentDirectory());
    Se faccio così non mi funziona,ossia mi parte sempre da Documenti.
  • Non è così semplice cme sembra.
    JFileChooser in modalità normale dovrebbe funzionare nel tuo file system.

    Per le directory remote (addirittura via FTP) penso proprio che la tua soluzione non vada bene.

    vfsjfilechooser
    http://sourceforge.net/projects/vfsjfilechooser/files

    oppure oggetto vfsjfilechooser2
    http://code.google.com/p/vfsjfilechooser2

    e anche un altro oggetto del genere
    http://vfsjfilechooser.sourceforge.net

    chr dovrebbero fare quello che vuoi te.

    Vedi di studiarti come funzionano gli oggetti e poi li applici al tuo sistema.

    Ciao
  • Ho risolto il problema,in locale funziona tutto quando eseguo il jar su un altro pc invece mi fa solo la connessione e disconnessione.Non mi carica ne scarica niente...posto un esempio di codice
    public boolean upload(File f){
    	boolean caricamento=false;
    	try{
    	client.enterLocalActiveMode();
        client.setFileType(FTP.BINARY_FILE_TYPE);
    	InputStream input = new FileInputStream(f.getAbsolutePath());
    	client.storeFile("aomrec/"+f.getName(),input);
    	caricamento=true;
    	}
    	catch(Exception e){e.printStackTrace();}
    	
    	return caricamento;
    	}
    	
    Può essere client.enterLocalActiveMode()?
  • Onestamente non lo so...
    non conosco bene questa libreria...
Devi accedere o registrarti per scrivere nel forum
11 risposte