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