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 :
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
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); }
(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 !
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.
Partager