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

  FORUM HardWare.fr
  Programmation
  Java

  [RESOLU]Problème de communication (DataInputStream & DataOutputStream)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]Problème de communication (DataInputStream & DataOutputStream)

n°648713
HannibAlBu​ndie
Posté le 19-02-2004 à 16:13:03  profilanswer
 

Bonjour,
 
J'ai donc un ptit problème de communication entre 2 flux et, bien qu'il soit probable que ce soit une erreur toute bête :whistle:, je sèche complètement :sweat:.
 
Mon objectif étant de permettre à un client d'uploader des fichiers sur un serveur, j'ai essayé avec ces morceaux de code :
 
Du coté serveur j'ai ça :

Code :
  1. String leNomFichier = "" ;
  2.  long laTailleFichier = -1 ;
  3.  byte leTampon[] = new byte[TAILLE_BLOC] ;
  4.  int leNbOctetsLus = -1, leNbOctetsLusTotal = 0 ;
  5.  try
  6.  {
  7.   leNomFichier = sonFluxEntree.readUTF() ;
  8.   laTailleFichier = sonFluxEntree.readLong() ;
  9.   FileOutputStream leFluxFichier = new FileOutputStream(REPERTOIRE + leNomFichier) ;
  10.   while (leNbOctetsLusTotal < laTailleFichier)
  11.   {
  12.    leNbOctetsLus = sonFluxEntree.read(leTampon) ;
  13.    System.out.println(leNbOctetsLus) ;
  14.    leFluxFichier.write(leTampon, 0, leNbOctetsLus) ;
  15.    leNbOctetsLusTotal += leNbOctetsLus ;
  16.   }


et du coté client j'ai ça :

Code :
  1. File leFichier = new File(REPERTOIRE + telFID + EXTENSION) ;
  2.  byte leTampon[] = new byte[TAILLE_BLOC] ;
  3.  int leNbOctetsLus = -1 ;
  4.  try
  5.  {
  6.   sonFluxSortie.writeUTF(leFichier.getName()) ;
  7.   sonFluxSortie.writeLong(leFichier.length()) ;
  8.   FileInputStream leFluxFichier = new FileInputStream(leFichier) ;
  9.   while ((leNbOctetsLus = leFluxFichier.read(leTampon)) != -1)
  10.   {
  11.    sonFluxSortie.write(leTampon, 0, leNbOctetsLus) ;
  12.    System.out.println(leNbOctetsLus) ;
  13.   }


J'en viens donc maintenant à mon problème :

  • Grâce aux System.out.println(leNbOctetsLus) ; placés dans les boucles j'ai pu constater que lors du dernier bloc à envoyer leNbOctetsLus était bien inférieur à TAILLE_BLOC coté client, mais que cet abrutit de serveur lisait encore TAILLE_BLOC octets :pfff: (il faut savoir que j'ai d'autres write qui suivent derrière coté client).
  • Au final, je me retrouve coté serveur avec un fichier plus gros que l'original, et tout les read / write qui suivent ne sont plus en phases :cry:.


Voili voilou, désolé si j'ai pas été super clair et désolé de vous déranger si c'est une erreur de merde :sarcastic:.
En tout cas ce serait super cool si vous pouviez me débloquer :jap:.
 
Merci d'avance pour les réponses :hello:.


Message édité par HannibAlBundie le 20-02-2004 à 18:10:26
mood
Publicité
Posté le 19-02-2004 à 16:13:03  profilanswer
 

n°649981
HannibAlBu​ndie
Posté le 20-02-2004 à 15:56:47  profilanswer
 

un ptit up dû à l'EDIT du 20/02 :D

n°650010
benou
Posté le 20-02-2004 à 16:30:51  profilanswer
 

Code :
  1. int leNombreDOctetRestantALire = laTailleFichier;
  2.        while (leNbOctetsLusTotal < laTailleFichier)
  3.        {
  4.           if (leNombreDOctetRestantALire > leTampon.length) {
  5.              leNbOctetsLus = sonFluxEntree.read(leTampon);
  6.           } else {
  7.              leNbOctetsLus = sonFluxEntree.read(leTampon, 0, leNombreDOctetRestantALire );
  8.           }
  9.           leNombreDOctetRestantALire -= leNbOctetsLus;
  10.           System.out.println(leNbOctetsLus) ;
  11.           leFluxFichier.write(leTampon, 0, leNbOctetsLus) ;
  12.           leNbOctetsLusTotal += leNbOctetsLus ;
  13.        }


---------------
ma vie, mon oeuvre - HomePlayer
n°650114
HannibAlBu​ndie
Posté le 20-02-2004 à 18:09:40  profilanswer
 

Merci beaucoup :jap: , ca marche beaucoup mieux comme ça :p


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

  [RESOLU]Problème de communication (DataInputStream & DataOutputStream)

 

Sujets relatifs
Problème d'installation de Javamail (urgent)[PHP] dupliquer une variable... [Resolu]
probleme avec variable de session (sou oracle)[Mysql] problème avec SELECT WHERE IN
[CSS] Problème de placement de div avec float[Windev7.5] Problème avec une clef composé
[C++] Probleme de linkage sous Visual C++petit problème avec mon forum phpbb
Probleme de récupération des variables d'une page à l'autre[PHP] Pendu probleme..
Plus de sujets relatifs à : [RESOLU]Problème de communication (DataInputStream & DataOutputStream)


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