link953 | Salut à tous,
Voila j'essai d'envoyer un INT à travers une socket en réponse au bon envoi d'un fichier. Le client java se connect au serveur C, lui envoi le fichier et l'ideal sera que le serveur réponde en envoyer un INT.
Le problème, la fonction read() bloque et ne reçoit rien sous java. Quand j'enlève la parti qui envoi le fichier je reçois le int sinon rien.
Code :
- //Préparation du fichier, ouverture des Streams d'échanges
- File myFile = new File (FilePath); //ouverture du fichier avec le chemin absolu recuperer avec l'intent
- byte [] mybytearray = new byte [(int)myFile.length()];
- FileInputStream fis = new FileInputStream(myFile); //Lecture depuis un fichier
- BufferedInputStream bis = new BufferedInputStream(fis); //Place ce qui est lu dans un buffer
- DataOutputStream out = new DataOutputStream( s.getOutputStream() ); //permet l'envoi de donnes en data
- bis.read(mybytearray,0,mybytearray.length);//Lecture du fichier
- OutputStream os = s.getOutputStream(); //permet d'envoyer la donnée en byte
-
- byte[] buffer = new byte[(int)myFile.length()];
- DataInputStream dis = new DataInputStream(new FileInputStream(myFile));
- dis.read(buffer, 0, buffer.length);
-
- taille_fichier = myFile.getName().length();
- out.writeInt( taille_fichier );
- os.flush();
- out.flush();
-
- String nom_fichier = myFile.getName();
- os.write(nom_fichier.getBytes(),0,myFile.getName().length());
- os.flush();
- out.flush();
-
- String md5 = IntegriterFichierActivity.md5sum(myFile);
- taille_md5 = md5.length();
- out.writeInt( taille_md5 );
- os.write(md5.getBytes(),0,md5.length());
- os.flush();
- out.flush();
- out.writeInt((int) myFile.length());
- out.flush();
- os.write(mybytearray);
- os.flush();
-
-
- System.out.println(s.getInputStream().read() );
-
-
- out.close();
- os.close();
- s.close();
|
|