je suis en train de créer un serveur qui accepte des browser (firefox, internet explorer, ...) comme client
pour chaque connection créé un objet client est créé pour pouvoir communiquer avec le browser
ce client est hérité de la class Thread
mon probleme vient de ce thread que je ne sais pas comment gerer pour recevoir les infos du browser
mes problemes :
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 public void run () { BufferedReader in; PrintStream out; try { in = new BufferedReader (new InputStreamReader (socket.getInputStream ())); out = new PrintStream (socket.getOutputStream ()); } catch (Exception ex) { System.err.println (ex.getMessage ()); } try { for (String requete = in.readLine (); requete.isEmpty () == true; requete = in.readLine ()) { System.out.println (requete); } } catch (IOException ex) { System.err.println (ex.getMessage ()); } }
in.readLine () n'est pas une fonction bloquante, donc le thread se termine des que le browser n'envoi plus d'infos (cad a dire directement apres que la connection soit établie)
in.readLine () lit une chaine de caracteres jusqu'à trouver un '\n', or le browser commence par envoyer un entete composé essentiellement de "\r\n",
donc comment savoir que le browser a fini sa requete ?
solutions souhaitées :
une fonction bloquante qui attend des infos (et qui signale la deconnection du browser)
une fonction qui recupere toute la requete du browser
en fait mon prog a été initialement codé en c++ et je le transforme en java
en c++ il y a une jolie fonction recv () qui fait tout ca :
bloque tant qu'elle n'a pas d'infos
recupere toute la requete du browser
renvoi le nombre de caracteres recu (-1 qd deconnection du browser)
existe-t-il l'equivalent en java ?
merci de vos reponses
Partager