Si tu veux pouvoir traiter les requetes de plusieurs client à la fois en continuant à accepter d'autres connections, il parait logique de vouloir utiliser des threads. Pour ce faire, voici un "squelette" de programme pour ton serveur. try {
ServerSocket server = new ServerSocket(port);
while (true) {
Socket connection = server.accept();
try {
Thread worker = new WorkerThread(connection.getInputStream());
worker.start();
}
catch (IOException e) {
System.err.println(e);
}
finally {
try {
if (connection != null) connection.close();
}
catch (IOException e) {}
}
}
}
catch (IOException e) {
e.printStackTrace();
} On crée chaque fois une nouvelle thread pour chaque requète. Evidement, il faut faire attention à ce que le nombre de thread crée ne devienne pas trop grand ! Voici le code du thread qui s'occupe du client. Il recoit le socket connecté au client et le ferme une fois que la transaction est terminée.
class WorkerThread extends Thread {
InputStream in;
public WorkerThread(InputStream in) {
this.in = in;
}
public void run() {
try {
... // ce qu'il faut faire
}
catch (SocketException e) {
// output thread closed the socket
}
catch (IOException e) {
System.err.println(e);
}
try {
in.close();
}
catch (IOException e) {
}
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question