Bonjour,
je développe en ce moment une petite application client/serveur qui permettra de jouer une animation (fichiers musicaux, images, etc...), mais je bloque au niveau de la transmission des fichiers du serveur au client.
Je n'ai pour l'instant essayé qu'avec des fichiers .mp3, tous les fichiers sont bien transmis, et les fichiers réceptionnés par le client ont la bonne taille, durée, etc... Le seul problème, et quand même de taille, est que la musique est incorrecte par rapport à l'originale (dans mon cas, elle ne s'arrête pas correctement), et donc le fichier a été corrompu pendant la transmission.
Voilà mon code pour l'échange de fichier :
Code serveur :
Code client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 byte[] buffer=new byte[512*1024]; int nbLus; try { FileInputStream srcFile = new FileInputStream(new File(file.getAbsolutePath()); while((nbLus=srcFile.read(buffer)) != -1){ System.out.println(nbLus); output.writeInt(nbLus); output.write(buffer); } output.writeInt(Protocol.END_OF_FILE); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }
Les input et output sont respectivement de type DataInputStream et DataOutputStream et sont simplement les flux d'entrée et de sortie associés à la socket de communication.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 byte[] buffer = new byte[512*1024]; int sizeBufferRead; int nbLus; try { FileOutputStream srcFile = new FileOutputStream(fieldPath.concat(fileName)); while((sizeBufferRead = input.readInt()) != Protocol.END_OF_FILE){ //On récupère le buffer input.readFully(buffer); //On ecrit dans le fichier srcFile.write(buffer); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Quelqu'un verrait d'où peut venir le problème ?
Partager