Copie de fichier par reseau
lebusher
Messages postés
24
Date d'inscription
Statut
Membre
Dernière intervention
-
lebusher Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
lebusher Messages postés 24 Date d'inscription Statut Membre Dernière intervention -
Bonsoir !
Voila, ça fait un moment que je traivaille sur un programe java me permettant de tranferer des fichiers d'une machine a l'autre par reseau, mais mon code a des comportements innattendu. je vous met les portions d'envoie et de reception. Le probleme actuel, est que je n'arrive pas a recevoir, vous verez des System.out bien placee, lesquels me signalent que je reçois 0 bytes. je me casse la tete dessus depuis ce matin mais je vois pas pourquoi je reçois pas. Pourriez vous m'aider s'il vous plait ?
Merci!
Methode de l'envoie :
Methode de reception :
Voila, ça fait un moment que je traivaille sur un programe java me permettant de tranferer des fichiers d'une machine a l'autre par reseau, mais mon code a des comportements innattendu. je vous met les portions d'envoie et de reception. Le probleme actuel, est que je n'arrive pas a recevoir, vous verez des System.out bien placee, lesquels me signalent que je reçois 0 bytes. je me casse la tete dessus depuis ce matin mais je vois pas pourquoi je reçois pas. Pourriez vous m'aider s'il vous plait ?
Merci!
Methode de l'envoie :
private static void envoieFichier( OutputStream os, File f){
try{
System.out.println(Files.copy(f.getAbsoluteFile().toPath(), os));
} catch(Exception e) { e.printStackTrace(); }
}
Methode de reception :
private static void recoisFichier( File file, InputStream is){
try{
System.out.println("recevon "+file);
System.out.println(Files.copy(is, file.getAbsoluteFile().toPath()));
System.out.println("RECU "+(file.length()/8));
//fin telechargement
} catch(Exception e) { b.append("verifier espace sur le peripherique..\n");e.printStackTrace(); }
}
A voir également:
- Copie de fichier par reseau
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
Bonjour,
Comment as-tu fait le code qui appelle ces deux méthodes ?
J'ai repris cet ancien code (Envoi des fichiers par des sockets java) pour l'adapter avec tes deux méthodes et le transfert de fichiers est bon.
Donc ce n'est pas les deux méthodes que tu nous montres qui poserai problème mais plutôt la manière dont tu les utilises.
Comment as-tu fait le code qui appelle ces deux méthodes ?
J'ai repris cet ancien code (Envoi des fichiers par des sockets java) pour l'adapter avec tes deux méthodes et le transfert de fichiers est bon.
Socket sock = new ServerSocket(9001).accept(); recoisFichier(new File("C:/test2.jpg"), sock.getInputStream()); sock.close();
Socket sock = new Socket(InetAddress.getLocalHost(), 9001); envoieFichier(sock.getOutputStream(), new File("C:/test.jpg")); sock.close();
Donc ce n'est pas les deux méthodes que tu nous montres qui poserai problème mais plutôt la manière dont tu les utilises.
justement c'est etrange parceque mon code il fonctionnais bien, et des fois le programme ne fonctionne pas correctement.
le probleme que je cherchais a resoudre est que le fichier recus avait quelques bits en moins.. et la mon programme me donne un fichier recu vide, j'esperai en postant mon code ainsi decouvrir ce qui est a l'origine de ce comportement instable
le probleme que je cherchais a resoudre est que le fichier recus avait quelques bits en moins.. et la mon programme me donne un fichier recu vide, j'esperai en postant mon code ainsi decouvrir ce qui est a l'origine de ce comportement instable
Fonction de reception :
//en fait je recois pas que des fichiers, mais aussi des dossier...
private static void recevoir(Socket client){
try{
InputStream is=new DataInputStream(client.getInputStream());
BufferedReader entree = new BufferedReader(new InputStreamReader(client.getInputStream()));
String nomFic = entree.readLine();b.append("recois "+nomFic+"\n");
File file=new File(nomFic);
String isFile = entree.readLine();
if ( valider(client, nomFic, isFile) ) {
if (isFile.equals("vrai"))
recoisFichier( new File(nomFic), is);
else {
OS = entree.readLine();
recoisFichier( new File("reception"+File.separator+nomFic+".zip"), is);
decompresser("reception"+File.separator+nomFic+".zip");System.out.println("Fin decompression");
}
}
entree.close();
is.close();
}
catch(IOException e){ e.printStackTrace(); }
}
et l'envoie :
voila pour mes fonctions d'envoie et reception
public static void envoyer(Socket serveur, String file){
try{
File fic = new File(file);
OutputStream os=new DataOutputStream(serveur.getOutputStream());
OutputStreamWriter sortie = new OutputStreamWriter(serveur.getOutputStream());
ecrire( fic.getName(), sortie);
if (fic.isFile()) ecrire( "vrai", sortie);
else ecrire( "faux", sortie);
if (fic.isFile()){
envoieFichier( os, new FileInputStream(fic), fic);
}
else {
dossier = fic.getName()+".zip";
FileOutputStream fos = new FileOutputStream(fic.getName()+".zip");
zos = new ZipOutputStream(new BufferedOutputStream(fos));
zos.setLevel(9);
zos.setMethod(ZipOutputStream.DEFLATED);
compresseDossier( fic.getAbsolutePath(), os, sortie, "");
zos.close();
ecrire(System.getProperty("os.name"), sortie);
envoieFichier(os, new FileInputStream(new File(fic.getName()+".zip")), new File(fic.getName()+".zip"));
}
} catch (IOException e){ b.append("Erreur d'envoie du fichier, veuillez reesayer!\n"); }
}
voila pour mes fonctions d'envoie et reception