Bonjour,
dans le cadre d'un TP je dois realiser un client/serveur FTP tres tres leger (seulement quelques commande).
Il ne me reste plus que les 2 difficiles (STOR envois de fichier et RETR telechargement de fichier)
Pour les echanges de commande ou reponse j'utilise tout le long des bufferedReader ou BufferedWriter.
Pour les transferts de fichiers, je veux juste utiliser les InputStream et OutputStream puisque ces derniers ne sont pas forcement des fichiers texte.
Apparement j'arrive a ecrire les donnees sur la socket coté serveur, mais mon read reste bloquant lorsque j'essais de lire sur la socket, meme avec la methode flush() pour forcer l'envois des donnees.
Voici d'abord le code pour l'ecriture du fichier sur la socket :
Voici maintenant le code pour lire le fichier sur la socket:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 FileInputStream fis = new FileInputStream(f); /* pour lire le fichier */ byte[] buffer = new byte[10]; /*buffer dans lequel je met ce que j'ai a lire*/ int nb; while( (nb=fis.read(buffer)) != -1 ) /*tant que je ne suis pas a la fin de fichier je lit*/ { s.getOutputStream().write(buffer,0,nb); /*enfin j'ecrit sur la socket */ } fis.close(); /*je ferme le FILE*/ s.getOutputStream().flush(); /* je force l'envois du flux*/
quelqu'un vois t'il une erreur?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 FileOutputStream fos = new FileOutputStream(f); /* file dans lequel j'ecris ce que j'ai lu*/ long i=0; byte[] b = new byte[10]; /*buffer de lecture */ while(i < taille) /*taille contient la taille en byte du fichier */ { is.read(b); /* JE RESTE BLOQUE LA, c'est comme ci y'avais rien a lire :(*/ i += b.length; fos.write(b,0,b.length); /* j'ecris dans le fichier*/ }
je suis perdu
[EDIT] c'est bon j'ai trouve
Partager