Bonjour,
J’essaie de faire un client ftp pour communiquer avec un serveur ftp en utilisant des socket. (le tp d'un cours)
Une fois la connexion faite, j’essaie d'afficher sur la console la réponse du serveur, mais on dirait que le programme bloque au moment ou la réponse est envoyée, et donc le programme ne suit pas le reste des instructions.
J'ai utilisé pour cela cette première méthode:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
            Socket connecteur = new Socket("127.0.0.1",21);
            BufferedInputStream lecteur = new BufferedInputStream(connecteur.getInputStream());
            String requete = "";
            String reponse = "";
            int i;
            byte[] donnees;
            // 
            i = -1;
            donnees = new byte[1024]; // 1ko à chaque lecture
            while((i = lecteur.read(donnees)) != -1)
                reponse += new String(donnees,0,i);
            System.out.println("R1 = "+reponse);
Je suis allé voir la correction, et là j'ai trouvé que pour recevoir certaines réponse du serveur, on utilisait cette méthode, et pour d'autre on utilise cella

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
      String response = "";
      int stream;
      byte[] b = new byte[4096];
      stream = lecteur.read(b);
      response = new String(b, 0, stream);
Et quand j'utilise cette dernière pour lire la première réponse du serveur (220) , elle fonctionne très bien.
Je voudrai donc comprendre la différence entre les deux méthodes, et quand est ce qu'on utilise la première et quand pour la deuxième
Merci d'avance.