bonjour,
je souhaite réaliser un client ftp en java, j'ai fait ceci :
il y a un problème au niveau de la lecture du buffer de réponse du serveur : méthode lire().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 import java.io.*; import java.net.*; public class Client { private int PORT=21; private char [] buf=new char[10000]; private static BufferedReader sin; private static BufferedReader console; private static PrintStream sout; private Socket s=null; public Client(String []arg) { if (arg.length!=1) erreur(); try { s=new Socket(arg[0],PORT); sin=new BufferedReader(new InputStreamReader(s.getInputStream())); console=new BufferedReader(new InputStreamReader(System.in)); sout=new PrintStream(s.getOutputStream()); System.out.println("Connexion : "+ s.getInetAddress()+ " port : "+s.getPort()); String ligne; while (true) { lire(); System.out.print("?"); System.out.flush(); ligne=console.readLine(); sout.println(ligne); } } catch (IOException e) {System.err.println(e);} finally {try {if (s!=null) s.close();} catch (IOException e2){}} } public void erreur() { System.err.println("Usage: java Client <hostname>"); System.exit(1); } public void lire() { for(int i=0;i<buf.length;i++) buf[i]='\0'; try { sin.read(buf); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } int k=0; do { System.out.print(buf[k]); k++; } while(buf[k]!='\0'); } }
la condition d'arret est mauvaise car il y a certain buffer de réponse du serveur qui sont décomposés en plusieurs avec entre 2 un caractère '\0'.
exemple : buffer1'\0'buffer2
comment faire pour tout lire sans être obligé d'appuyer plusieurs fois sur entree ?
merci
Partager