Bonjour,

vous l'aurez peut-être remarqué que tous mes problèmes sont basés sur le concept des sockets, cette fois-ci je cherche le meilleur moyen de fermer son (client/serveur) après un transfert de fichiers, le mien m'affiche l'erreur : (Connection reset by peer) je pense que j'interrompe la connexion avant qu'elle ait fini, mais je ne sais pas comment résoudre ça, voici mon code :

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
32
33
34
35
36
37
38
39
40
41
42
 
 OutputStream os = null;
        DataOutputStream dos = null;
        Socket sock = null;
 
        try {
            sock = new Socket("127.0.0.1", 80);
 
 
            File myFile = new File("D:\\Zest\\1.png");
            byte[] mybytearray = new byte[(int) myFile.length()];
 
            FileInputStream fis = new FileInputStream(myFile);
            BufferedInputStream bis = new BufferedInputStream(fis);
 
 
            DataInputStream dis = new DataInputStream(bis);
            dis.readFully(mybytearray, 0, mybytearray.length);
 
            os = sock.getOutputStream();
 
                 dos = new DataOutputStream(os);
            dos.writeUTF(myFile.getName());
            dos.writeLong(mybytearray.length);
            dos.write(mybytearray, 0, mybytearray.length);
            dos.flush();
 
 
            os.write(mybytearray, 0, mybytearray.length);
            os.flush();
 
            os.close();
           dos.close();  
          sock.close();  
 
        } catch (IOException ex) {
 
            Logger.getLogger(Envoyer.class.getName()).log(Level.SEVERE, null, ex);
 
            System.out.print("Erreur 1: "  + ex.getMessage());
 
        }
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
32
33
34
35
36
37
38
39
40
41
42
43
44
 
   public class thread_envoi extends Thread {
 
        @Override
        public void run() {
 
             try {
            int bytesRead;
            int current = 0;
 
            ServerSocket serverSocket = null;
            serverSocket = new ServerSocket(80);
 
            while(true) {
                Socket clientSocket = null;
                clientSocket = serverSocket.accept();
 
                InputStream in = clientSocket.getInputStream();
 
                DataInputStream clientData = new DataInputStream(in);
 
                String fileName = clientData.readUTF();
                OutputStream output = new FileOutputStream("D:\\"+fileName);
                long size = clientData.readLong();
                byte[] buffer = new byte[1024];
                while (size > 0 && (bytesRead = clientData.read(buffer, 0, (int)Math.min(buffer.length, size))) != -1)
                {
                    output.write(buffer, 0, bytesRead);
                    size -= bytesRead;
                }
 
 
                in.close();
                clientData.close();
                output.close(); 
 
            }   } catch (IOException ex) {
            Logger.getLogger(Recevoir.class.getName()).log(Level.SEVERE, null, ex);
        }
 
 
        }
 
    }
Merci pour votre aide !