Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1376 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Tranfert de plusieurs fichier client/server

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Tranfert de plusieurs fichier client/server

n°238340
bartleby
Posté le 01-11-2002 à 15:54:26  profilanswer
 

Bonjour a tous,
 
J'ai un probleme pour transferer plusieurs fichiers differents lors d'une meme connexion. Le probleme, c'est que le programme qui recoit les fichiers ne se rend pas compte que le 1er est fini et qu'il doit passer au second.  
 
Lorsque j'essaye de transferer 2 fichiers, le contenu du 1er et du second se retrouve dans le 1er du coté destination ( et le 2 eme n'est meme pas crée).
 
Sources :
 

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.      
  15.            inFile.write(bb,0,amount);
  16.            System.out.println("Receiving first picture"+bb.toString());
  17.        }
  18.   RandomAccessFile inFile2 = new RandomAccessFile ("new04ryan.jpg","rw" ); //on creer le fichier sur le disque dur
  19.        byte bb2[] = new byte[1024];
  20.        int amount2;
  21.        while((amount2 = in2.read(bb2)) != -1){
  22.          System.out.println("Receiving second picture" );
  23.            inFile2.write(bb2,0,amount2);
  24.        }
  25.        in2.close();
  26.        inFile.close();
  27.        t.close();
  28.    }
  29.    catch(IOException e){System.out.println(e);} 
  30.  
  31. }
  32. }


 

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.      
  16.        outFile.close();
  17.    
  18.      
  19.        byte bb2[] = new byte[1024];
  20.        int amount2;
  21.    RandomAccessFile outFile2 = new RandomAccessFile("02ryan.jpg","r" ); // création du fichier en lecture       
  22.        while((amount2 = outFile2.read(bb2)) != -1){
  23.            out2.write(bb2, 0,amount2);
  24.        }
  25.        out2.close();
  26.        t.close();
  27.    }catch(IOException e){System.out.println(e);} 
  28.  
  29.  
  30.   }
  31.  
  32. }


 
Je me doute bien qu'il faudrait avertir le recepteur du changement de fichier mais je ne sais pas vraiment comment faire...
 
Merci d'avance

mood
Publicité
Posté le 01-11-2002 à 15:54:26  profilanswer
 

n°238378
MachinBidu​le
Posté le 01-11-2002 à 19:27:20  profilanswer
 

Est-ce-qu'il ne serait pas plus simple de transférer un fichier à la fois ? Donc n fichiers -> n transferts avec ouverture d'un socket à chaque coup :??:

n°238385
darklord
You're welcome
Posté le 01-11-2002 à 19:38:49  profilanswer
 

MachinBidule a écrit a écrit :

Est-ce-qu'il ne serait pas plus simple de transférer un fichier à la fois ? Donc n fichiers -> n transferts avec ouverture d'un socket à chaque coup :??:  




 
si les fichiers sont petits c'est pas super efficace. C'est comme si tu rouvrais une session avec ton mail serveur chaque fois que tu dois envoyer un mail


---------------
Just because you feel good does not make you right
n°238393
MachinBidu​le
Posté le 01-11-2002 à 20:03:32  profilanswer
 

Ah oui, c'est vrai. Oops... +1 pour toi
 
Autre solution, alors:
 
Ecrire avant chaque "sous-flux" de fichier, une variable de type long (donc de longueur fixe) qui te donne le nombre d'octets à lire pour le prochain fichier. Ainsi, tu peux gérer une "rupture" sur ton flux de données pour le découper en autant de fichier à créer.
 
En pseudo-code:
 

Code :
  1. tant que flux non fini {
  2.     lire longueur (n) en octets du fichier à récupérer du flux
  3.     créer nouveau fichier en sortie
  4.     lire les n ocetets du flux vers le fichier
  5.     fermer le fichier en sortie
  6.   }


n°238777
bartleby
Posté le 03-11-2002 à 12:17:52  profilanswer
 

Trés bonne idée.
 
Avant d'envoyer les fichiers, j'envoie leurs tailles en bytes.
Le recepteur sait quand s'arreter :) !
 
Ca marche :) :) !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Tranfert de plusieurs fichier client/server

 

Sujets relatifs
Ecrire un prog qui permet de downloader un fichier[Java] Tranfert de fichier client/server ????
Lire une partie d'un fichier texte [résolu]problème d'ouverture de fichier [résolu]
compresser un fichier sur le serveurtransfert de data d'un fichier csv dans une base de données mysql
[SSL] Certificat client 
Plus de sujets relatifs à : Tranfert de plusieurs fichier client/server


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR