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

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 ());
   }
  }
mes problemes :
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