Probléme serveur multi-thread
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 :
Citation:
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:
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:
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:
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 !