[Java] Tranfert de fichier client/server ????

Tranfert de fichier client/server ???? [Java] - Java - Programmation

Marsh Posté le 31-10-2002 à 18:02:36    

Donc voia c pas très compliqué, je n'arrive pas a tranferer de fichier entre un client ftp et un server ftp
 
pour la fonction "GET fichier" (le client tape cette commande)
 
dans ma classe Clientftp g:
try{
        RandomAccessFile inFile = new RandomAccessFile (System.getProperty("user.dir" )+"/"+s,"rw" ); //on creer le fichier sur le disque dur
        t = new Socket(host,6667); //on creer une nouvelle socket pour le transfert du fichier
        InputStream in2 = t.getInputStream();  
        byte bb[] = new byte[1024];
        int amount;
        while((amount = in2.read(bb)) != -1){
            inFile.write(bb,0,amount);
        }
        in2.close();
        valRetour=0;
        inFile.close();
        t.close();
    }
    catch(IOException e){}  
 
s correspond au nom du fichier que je veux télécharger
 
dans la classe du server g ceci:
 
    server.ps.println("150 Binary data connection" );
    try{
        RandomAccessFile outFile = new RandomAccessFile(System.getProperty("user.home" )+"\\"+s,"r" ); // création du fichier en lecture
        Socket t = new Socket(host,6667); //nouvelle socket pour le transfert du fichier
        OutputStream out2 = t.getOutputStream();  
        byte bb[] = new byte[1024];
        int amount;
        while((amount = outFile.read(bb)) != -1){
            out2.write(bb, 0,amount);
        }
        out2.flush();
        out2.close();
        server.ps.println("226 transfer complete" );
        outFile.close();
        t.close();
    }catch(IOException e){}  
 
 
donc voila les fonction sur mes deux classes
 
le porblèpe est que mon fihcier est bien créer amis il n'y a rien dedans
rien n'a été envoyé de la part du server
 
si kelk'un aurait une idée de mon erreur
 
meric d'avance

Reply

Marsh Posté le 31-10-2002 à 18:02:36   

Reply

Marsh Posté le 01-11-2002 à 12:01:26    

Quelle idée de faire un truc aussi bas niveau alors que des libs open source existe. Voir ma signature et fais une recherche dans la java faq sur FTP. Tu vas tomber sur NetComponents et une implémentation je crois.
 
Plus simple que ca j'ai enore rarement trouvé et ca fonctionne très bien.
 
A+


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 01-11-2002 à 13:17:57    

Hm, je pense voir d'ou vient le probleme.
 
Sur ton serveur, tu crées le fichier avant de verifier la connexion, il ne contient donc rien.
Ensuite tu attends la connexion est là 2 possibilites :
 
- Il y a un probleme lors de l'etablissement de la connexion et une exception est lancée.
- Il y a un probleme lors de l'envoie des données au niveau de ton serveur.
 
Donc, tout est normal, tu crées ton fichier trop top, et surtout, tu catches tres mal tes exceptions !! Je suis presque sur que tu loupes le vrai probleme.
 
Je te propose de changer ta facon de catcher, mes ca au lieu de "rien" :
 

Code :
  1. System.out.println(e);


 
et de créer ton fichier plus tard sur le serveur:
 

Code :
  1. try{
  2.              Socket t = new Socket(host,6667); //nouvelle socket pour le transfert du fichier  
  3. RandomAccessFile outFile = new RandomAccessFile(System.getProperty("user.home" )+"\\"+s,"r" ); // création du fichier en lecture  
  4.        OutputStream out2 = t.getOutputStream(); 
  5.        byte bb[] = new byte[1024];
  6.        int amount;
  7.        while((amount = outFile.read(bb)) != -1){
  8.            out2.write(bb, 0,amount);
  9.        }
  10.        out2.flush();
  11.        out2.close();
  12.        server.ps.println("226 transfer complete" );
  13.        outFile.close();
  14.        t.close();
  15.    }catch(IOException e){}


 
Personnelement, j'ai testé cela chez moi et ca marchait tres bien:
 
Receiver :
 

Code :
  1. import java.util.*;
  2. import java.net.*;
  3. import java.io.*;
  4. public class Receiver{
  5. public static void main(String[] argv){
  6. try{
  7.        ServerSocket titi = new ServerSocket(6667); //on creer une nouvelle socket pour le transfert du fichier
  8.        Socket t=titi.accept();
  9.        RandomAccessFile inFile = new RandomAccessFile ("new03.jpg","rw" ); //on creer le fichier sur le disque dur
  10.        InputStream in2 = t.getInputStream(); 
  11.        byte bb[] = new byte[1024];
  12.        int amount;
  13.        while((amount = in2.read(bb)) != -1){
  14.            inFile.write(bb,0,amount);
  15.        }
  16.        in2.close();
  17.        inFile.close();
  18.        t.close();
  19.    }
  20.    catch(IOException e){System.out.println(e);} 
  21.  
  22. }
  23. }


 
Sender :
 

Code :
  1. import java.util.*;
  2. import java.net.*;
  3. import java.io.*;
  4. public class Sender{
  5. public static void main(String[] argv){
  6. try{
  7.        RandomAccessFile outFile = new RandomAccessFile("04.jpg","r" ); // création du fichier en lecture
  8.        Socket t = new Socket(argv[0],6667); //nouvelle socket pour le transfert du fichier
  9.        OutputStream out2 = t.getOutputStream(); 
  10.        byte bb[] = new byte[1024];
  11.        int amount;
  12.        while((amount = outFile.read(bb)) != -1){
  13.            out2.write(bb, 0,amount);
  14.        }
  15.        out2.flush();
  16.        out2.close();
  17.        outFile.close();
  18.        t.close();
  19.    }catch(IOException e){System.out.println(e);} 
  20.  
  21.  
  22.   }
  23.  
  24. }


 
Voila, bon courage et tiens nous au courant :) !


Message édité par bartleby le 01-11-2002 à 13:20:40
Reply

Marsh Posté le 27-05-2008 à 13:48:26    

Si ça peut t'aider, j'ai mis en ligne le code source et la documentation d'un serveur multi-thread en java ( connection socket et modification du serveur en RPC) . Tu peux le télécharger à cette adresse : http://www.angelfires-fr.com/progr [...] ittpServer  :hello:

Reply

Marsh Posté le 27-05-2008 à 14:01:24    

J'espère qu'il a trouvé la solution 6 ans après...
  [:tonio65]


---------------
Light is right
Reply

Marsh Posté le 27-05-2008 à 14:15:36    

mlc nine pack
 
[:mlc] [:mlc] [:mlc]
[:mlc] [:mlc] [:mlc]
[:mlc] [:mlc] [:mlc]
 
Déterrage top class :jap:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed