Bonjour à tous,

Je réalise une petite application qui est censé transféré un fichier d'un poste à un autre. La partie serveur doit pouvoir accépter plusieurs connexions, mais lors de la connexion j'ai cette erreur qui apparait :

Exception in thread "main" java.net.SocketException: Socket is closed
at java.net.ServerSocket.accept(ServerSocket.java:417)
at MultiServer.main(MultiServer.java:26)
Socket[addr=/127.0.0.1,port=49295,localport=4444]
Je vous fournit ci-dessous les codes de ma classe MultiThread, le code du serveur et celui des clients :

Tout d'abord les classe permettant de réaliser le serveur :

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
public class MultiServerThread extends Thread 
{
 
	private Socket socket = null; 
 
	public MultiServerThread(Socket soc) 
	{
		super("MultiServerThread");
		this.socket = soc; 
	}
 
	public void run() 
	{ 
		try
		{
			System.out.println(this.socket);
			FileOutputStream f = new FileOutputStream("la.mp3");
 			BufferedOutputStream fr = new BufferedOutputStream(f);
 			BufferedInputStream fenvoi = new BufferedInputStream(this.socket.getInputStream());
 			int octet = 0;
			while (octet != -1 ) 
			{
 				octet = fenvoi.read();
 				fr.write(octet);
			}
 			fenvoi.close();
 			fr.close();
 			f.close();
			this.socket.close();
		}
		catch (Exception e)
		{
			e.printStackTrace(); 
		} 
	} 
 
}
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
public class MultiServer 
{ 
 
	public static void main(String[] args) throws IOException 
	{
		ServerSocket serverSocket = null;
 
   		boolean listening = true;
 
		try
		{
			serverSocket = new ServerSocket(4444); 
		} 
 
		catch (IOException e) 
		{
			System.err.println("Could not listen on port: 4444."); 
			System.exit(-1);
		} 
 
		while (listening)
		{
			new MultiServerThread(serverSocket.accept()).start();
			serverSocket.close();
		}
	} 
}
Maintenant la classe du client :

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
public class Client 
{
   static final int port = 4444 ;
 
   public static void main(String[] args) throws Exception {
        Socket socket = new Socket("localhost", port);
        System.out.println("SOCKET = " + socket);
 	File fichier = new File("ici.mp3");
 	FileInputStream f = new FileInputStream(fichier);
 	BufferedInputStream fr = new BufferedInputStream(f);
 	BufferedOutputStream fenvoi = new BufferedOutputStream(socket.getOutputStream());
	int octet = 0;
	while (octet != -1 ) 
	{
 		octet = fr.read();
 		fenvoi.write(octet);
 
	}
 	fenvoi.close();
 	fr.close();
 	f.close();     
        socket.close();
   }
}
En ésperant des réponses, merci d'avance !