Bonjour

Je vous décris mon problème:
j'ai une application avec plusieurs bouton deux entre eux sont les boutons "envoie" qui envoie un fichier avec les socket et "réception" qui reçoit le fichier.
quand je click sur le bouton "envoie" toute l'application se bloque c'ad impossible de cliquer sur un autre bouton. J'ai donc ouvert la même application une deuxième fois(les deux applications ouvertes en même temps une bloqué et l'autre fonctionne) puis cliqué sur le bouton "réception" de la deuxième application pour que tout se libère donc c'est bon le fichier est transmis et reçus mais même problème, après clique sur le bouton réception de l'application 2 elle se bloque!!!!
J'ai testé l'application sans envoie et réception de fichier et elle fonctionne impeccablement c'est pour cela que je pense qu'il y a un problème au niveau de ces deux programmes:
voici les programme envoie de fichier et réception de fichier
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
package chiffrement;   
import java.net.*;
   import java.io.*;
import java.util.*;
 
 
   public class FileSender extends Thread
   {
      private ServerSocket socketListener;
      private Socket s;
      private File fileToSend;
 
      public FileSender(int port,File fileToSend) 
      {
         this.fileToSend = fileToSend;
         System.out.println("Fichier = "+fileToSend);
 
         try
         {
            socketListener = new ServerSocket(port);    //Ce ServerSocket écoute les tentatives de connexion   
         }
            catch(IOException e)
            {
               System.err.println("Impossible découter sur le port.");
            }
 
         start();
      }
      public class FileTransfer extends Thread
      {
         private File fileToSend;
         private Socket client;
         private DataOutputStream dataOut;
         private FileInputStream fis = null;
 
      /** Creates a new instance of FileTransfer */
         public FileTransfer(Socket client,File fileTosend)
 
         {
            super("ServerMultiThread");
            this.client=client;
            this.fileToSend = fileTosend;
            try
            {
               dataOut = new DataOutputStream(client.getOutputStream());
            }
               catch(IOException ioe)
               {
                  System.out.println("Erreur lors de la création du flux de sortie : "+ioe);
               }
 
            boolean fileExists = true;
            try
            {
               fis = new FileInputStream(fileToSend); //Flux de lecture dans le fichier
               System.out.println("FileInputStream crée = "+fis.toString());
            }
               catch (FileNotFoundException e)
               {
                  fileExists = false;
               }
            if (fileExists)
            {
            //Création d"un buffer de 4K
               byte[] buffer= new byte[4096];
               int bytes = 0;
 
               try
               {
                //Envoie du nom du fichier dans le flux de sortie
                  //dataOut.writeUTF(fileToSend.getName());
 
                //Copie du fichier dans le flux de sortie  
                  while((bytes = fis.read(buffer)) != -1)
                     dataOut.write(buffer, 0, bytes);
 
                  fis.close();
               }
                  catch(IOException ioe)
                  {
                     System.out.println("Erreur d'IO : "+ioe);
                  }
            }
         }
      }
      public void run()
      {
         try
         {
            while(true)
            {
               s = socketListener.accept();
               System.out.println("Socket accepté = "+s.toString());
               new FileTransfer(s,fileToSend);
               break;
            }
         }
            catch(IOException ioe)
            {
               System.out.println("Erreur d'IO : "+ioe);
            }
 
 
      }
      public static void main (String[] args) throws IOException{
         File fichier = new File("C:/Users/workspace/Projet/src/chiffrement/fichier1.txt");
 
         FileSender o=new FileSender(4004,fichier);
         o.run();
      }
   }
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
package chiffrement;
 
import java.net.*;
 
import java.io.*;
 
import java.util.*;
 
public class FileReceiver
 
{
 
   private Socket client;
 
   private DataInputStream dataIn;
 
   private FileOutputStream fos;
 
   private File fichier;
 
 
 
 /** Creates a new instance of FileReceiver */
 
   public FileReceiver(String file)
 
   {
 
 
 
      try
 
      {
 
         int i;
 
 
 
         client = new Socket("127.0.0.1",4004); //Connexion au serveur
 
         dataIn = new DataInputStream(client.getInputStream());
 
 
 
         File fichier = new File(file);
 
         fos = new FileOutputStream(fichier); // Ecriture dans le fichier
 
         while((i = dataIn.read()) != -1)
 
            fos.write(i);
 
      }
 
         catch(Exception e)
 
         {
 
            System.out.println("Erreur : "+e);
 
         }
 
 
 
   }
   public static void main (String[] args){
      FileReceiver p=new FileReceiver("C:/Users/workspace/brouillon/src/data.txt");
 
 
   }
}
merci à vous