Bonjour tout le monde, j'ai un petit problème de transfert de fichier avec la connexion SSL. Le transfert marcher très bien sans le SSL!
Je vous met le code concerné en dessous:
Et voici les erreurs reçues:
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88 import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.SocketException; import java.net.SocketTimeoutException; import java.util.logging.Logger; import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLSocket; public class Reception_Fichier implements Runnable { // Après 10 minute sans connection, le serveur s'arrête(1000 = 1 seconde ) public static final int ACCEPT_TIMEOUT = 60000; private SSLSocket ssls; private final File directory; private SSLServerSocket sslss; public static byte[] data = new byte[512]; protected static final Logger logger = Logger.getLogger(Reception_Fichier.class.getName()); public boolean over = true; OutputStream os; public Reception_Fichier(File directory, int port, SSLSocket s, SSLServerSocket ss) { this.directory = directory; this.ssls = s; this.sslss = ss; } private void transfer(InputStream is, OutputStream os) throws IOException { System.out.println("etape3 échange "); for (int i = is.read(data); i >= 0; i = is.read(data)) os.write(data, 0, i); System.out.println("fin echange "); over = false; } public void run() { System.out.println("etape1 échange "); try { sslss.setSoTimeout(ACCEPT_TIMEOUT); } catch (SocketException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } while (over) { try { os = new BufferedOutputStream( new FileOutputStream(new File(directory, ssls.getInetAddress() + "-" + ssls.getPort() + ".wma"))); // Sauvegarde les données dans un fichiers nommé avec // l'adresse et le port du client try { Thread.sleep(6000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("etape2 échange "); transfer(ssls.getInputStream(), os); over = false; } catch (SocketTimeoutException e) { System.err .println("Le Serveur s'arrête pour cause de non connexion"); break; } catch (IOException e) { e.printStackTrace(); //continue; // Treat the next incoming client } } } }
Un Client veut entamer un échange
etape1 échange
etape2 échange
etape3 échange
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
at sun.security.ssl.InputRecord.read(InputRecord.java:480)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
at java.io.InputStream.read(InputStream.java:101)
at Reception_Fichier.transfer(Reception_Fichier.java:39)
at Reception_Fichier.run(Reception_Fichier.java:70)
at java.lang.Thread.run(Thread.java:724)
etape2 échange
etape3 échange javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: java.net.SocketException: Connection reset
at sun.security.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1476)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:92)
at java.io.InputStream.read(InputStream.java:101)
at Reception_Fichier.transfer(Reception_Fichier.java:39)
at Reception_Fichier.run(Reception_Fichier.java:70)
at java.lang.Thread.run(Thread.java:724)
Caused by: javax.net.ssl.SSLException: java.net.SocketException: Connection reset
at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1842)
at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1806)
at sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1751)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:113)
... 4 more
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:196)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at sun.security.ssl.InputRecord.readFully(InputRecord.java:442)
at sun.security.ssl.InputRecord.read(InputRecord.java:480)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927)
at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884)
at sun.security.ssl.AppInputStream.read(AppInputStream.java:102)
... 4 more
Partager