Bonjour,
Je développe actuellement un serveur HTTP, et je rencontre un problème étrange. Lorsque j'envoie ma première requête, le serveur répond bien et la réponse s'affiche dans mon browser (IE ou FireFox). Par contre, si je relance la requête (Ctrl+R) la réponse n'arrive jamais au client. IE affiche sa page serveur indispo et Firefox me dit que la connexion a été interrompu avant la réception du message.
J'ai essayer de faire un cache côté serveur, histoire de ne pas refaire tout le traitement mais renvoyer directement la réponse si la requête m'est déjà parvenu, mais la encore la seconde requête n'aboutit pas. Le plus bizarre c'est que si je met un breakpoint (Eclipse) en DEBUG avant l'appelle de la fonction qui écrit sur la socket alors la réponse parvient au client.![]()
Voici une partie du code de mon serveur:
En gros, j'ai un pool de socket, et dès que je lit une requet je l'envoie à un thread avec la socket de réponse. C'est ce thread qui envoie la réponse et qui ferme la socket.
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 public void listen() { while (true) { try { socket.add(server.accept()); System.out.println("\nConnexion sur le serveur "+this.id+": " + socket.lastElement()); // Récupération des flux d'entrés et de sortie InputStream fluxEntree = ((Socket)socket.lastElement()).getInputStream (); char caractereLu; String stringLu=""; while ((caractereLu = (char)fluxEntree.read ()) != '\n') { stringLu+=caractereLu; } this.objet.parse(stringLu, ((Socket)socket.lastElement())); } catch (IOException e){ System.out.println ("Serveur.listen :Erreur de la methode listen e="+e); } } }
Quelqu'un pourrait me dire ce qui se passe?
Partager