Bonsoir tout le monde,

je cherche un moyen pour transférer un fichier par socket accompagné de son nom pour ne pas avoir à introduire son nom à chaque fois à chaque transfert, pour l'instant voila ce que j'ai :

Envoi :

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
 
        try {
            String Chemin = "D:\\Zest\\1.txt";
 
            ServerSocket Servsocket = new ServerSocket(80);      
 
            File F = new File(Chemin);
 
            String nom = F.getName();  // ici j'ai pris le nom de mon fichier.
 
            Socket socket = Servsocket.accept();
 
            int NOL;
 
            byte[] MonBuffer = new byte[1024];
 
            OutputStream OS = socket.getOutputStream();
       //     BufferedInputStream BIS = new BufferedInputStream(new FileInputStream(F));
            BufferedInputStream enbyte = new BufferedInputStream(new FileInputStream(nom));  // ici j'ai transformé mon String en byte (je crois)
 
 
            while ((NOL = enbyte.read(MonBuffer)) > 0) {         // j'ai remplacé le contenu du fichier par le nom
                OS.write(MonBuffer, 0, NOL);
                OS.flush();                                                       // j'envoie le nom
            }
 
            socket.close();
 
        } catch (IOException ex) {
            Logger.getLogger(Envoi.class.getName()).log(Level.SEVERE, null, ex);
        }
Réception:

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
 
String Chemin = "D:\\test.txt";    
 
String Nom = null;     // ici je crée un String vide 
 
        try {
 
			Socket socket = new Socket("127.0.0.1", 80);
			int NOL;
			byte[] Monbuffer = new byte[1024];
            FileOutputStream FOS = new FileOutputStream(Chemin);                  // je le mets à la place du chemin pour qu'il reçoive les données 
            BufferedOutputStream OUT = new BufferedOutputStream(FOS);
 
 
            InputStream IStream = socket.getInputStream();
 
            while((NOL=IStream.read(Monbuffer)) >0){
                FOS.write(Monbuffer, 0, NOL);
            }
            FOS.close();
            socket.close();
        } catch (IOException ex) {
            Logger.getLogger(reception.class.getName()).log(Level.SEVERE, null, ex);
        }
 
jTextField1.setText(Nom); // ici j'affiche le mon String dans un composant TextField.
(je tiens à préciser que ce code à la base n'était pas mien) j'y ai fait quelques modifications. J'espère que ma demande est compréhensible, merci bien pour votre aide !