reception INT de C vers Java problématique

reception INT de C vers Java problématique - Java - Programmation

Marsh Posté le 13-06-2012 à 14:28:40    

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 :
  1. //Préparation du fichier, ouverture des Streams d'échanges
  2.              File myFile = new File (FilePath); //ouverture du fichier avec le chemin absolu recuperer avec l'intent
  3.              byte [] mybytearray  = new byte [(int)myFile.length()];
  4.              FileInputStream fis = new FileInputStream(myFile); //Lecture depuis un fichier
  5.              BufferedInputStream bis = new BufferedInputStream(fis); //Place ce qui est lu dans un buffer
  6.              DataOutputStream out = new DataOutputStream( s.getOutputStream() ); //permet l'envoi de donnes en data
  7.              bis.read(mybytearray,0,mybytearray.length);//Lecture du fichier
  8.              OutputStream os = s.getOutputStream(); //permet d'envoyer la donnée en byte
  9.    
  10.           byte[] buffer = new byte[(int)myFile.length()];
  11.             DataInputStream dis = new DataInputStream(new FileInputStream(myFile));
  12.             dis.read(buffer, 0, buffer.length);
  13.          
  14.              taille_fichier  = myFile.getName().length();
  15.              out.writeInt( taille_fichier );
  16.              os.flush();
  17.              out.flush();
  18.           
  19.              String nom_fichier = myFile.getName();
  20.              os.write(nom_fichier.getBytes(),0,myFile.getName().length());
  21.              os.flush();
  22.              out.flush();
  23.             
  24.              String md5 = IntegriterFichierActivity.md5sum(myFile);
  25.              taille_md5 = md5.length();
  26.              out.writeInt( taille_md5 );
  27.              os.write(md5.getBytes(),0,md5.length());
  28.              os.flush();
  29.              out.flush();
  30.              out.writeInt((int) myFile.length());
  31.              out.flush();
  32.              os.write(mybytearray);
  33.              os.flush();
  34.             
  35.  
  36.          System.out.println(s.getInputStream().read() );            
  37.               
  38.  
  39.      out.close();
  40.                os.close();
  41.             s.close();

Reply

Marsh Posté le 13-06-2012 à 14:28:40   

Reply

Marsh Posté le 13-06-2012 à 15:21:08    

Bon j'ai reussi. Il faut faire attention aux envois et les terminer avec socket.ShudownOutput();

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed