Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1714 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Mini serveur HTTP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mini serveur HTTP

n°629837
yo c spi
Yo !
Posté le 03-02-2004 à 15:48:26  profilanswer
 

Salut,  
 
J'ai un petit (mais alors tout petit) serveur HTTP en Java dont voici un bout de code:

Code :
  1. try{
  2.             ServerSocket ss = new ServerSocket(2511);
  3.             while(true) {
  4.                 Socket s = ss.accept();
  5.                 BufferedReader br = new BufferedReader( new InputStreamReader(s.getInputStream()));
  6.                 String str = br.readLine();
  7.                 while(!str.equals("" )) {
  8.                     System.out.println(str);
  9.                     str = br.readLine();
  10.                 }
  11.                 new Page(s).start();
  12.             }
  13.         }
  14.         catch(IOException e) {System.out.println(e);}


et voici le code de la classe page :

Code :
  1. private class Page extends Thread {
  2.         Socket s;
  3.        
  4.         public Page(Socket s) {
  5.             this.s = s;
  6.         }
  7.        
  8.         public void run() {
  9.             try{
  10.                 PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
  11.                 Calendar c = Calendar.getInstance();
  12.                 String date = c.get(c.DAY_OF_MONTH) + "/" + c.get(c.MONTH) + "/" + c.get(c.YEAR);
  13.                 String content = getContent();
  14.                 pw.print("HTTP/1.1 200 OK\r\nContent-length : "+content.length()+"\r\nDate : "+date+"\r\nContent-Type : text/html\r\n\r\n" );
  15.                 pw.print(content);
  16.                 pw.flush();
  17.             }
  18.             catch(Exception e) {System.out.println(e);}
  19.         }


 
Et j'ai quelques petits problèmes :  
- si je ferme le socket apres l'envoi des données (ou meme le printWriter), le navigateur dit que le document est vide ("Document contains no data" sous Mozilla, erreur DNS sous IE) pourtant ca doit bouffer carrément en ressources
- de plus, bien que ce serveur soit multi processus, je ne peux pas consulter plusieurs fois la page en meme temps (temps de réponse infini, sauf si j'arrete un chargement, un autre se finit - tres louche!)
- et enfin, lors de la réception de la requete du navigateur, si je fait un while(str!=null) a la place de while(!str.equals("" )),  br.readLine() rentre dans une boucle infinie a un moment donné.
 
Voila, beaucoup de problèmes pour ce tout petit bout de code quand meme!
Je remercie d'avance toutes les personnes m'aidant dans cette tache.


Message édité par yo c spi le 03-02-2004 à 15:49:12
mood
Publicité
Posté le 03-02-2004 à 15:48:26  profilanswer
 

n°629840
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 03-02-2004 à 15:51:01  profilanswer
 

Pour ta première question, oublie pas de fermer ton PrintWriter via pw.close() :o
Pour les autres, je sais pas trop :D


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°629865
bulfire
Posté le 03-02-2004 à 16:15:01  profilanswer
 

Manque des choses dans ton code
si tu veut essaye de te baser sur ce code la qui est déjà minimaliste
 
http://jfod.cnam.fr/csiml_b2/esiee [...] ttpd2.java
 
@+

n°629886
therier
heu...coucou!
Posté le 03-02-2004 à 16:33:46  profilanswer
 

Une remarque : Tu peux tester ton petit serveur en faisant un "telnet @detonserveur portdetonserveur" sous dos et en tapant les commandes telles quelles.

n°629888
darklord
You're welcome
Posté le 03-02-2004 à 16:34:59  profilanswer
 

W3C jigsaw

n°630001
yo c spi
Yo !
Posté le 03-02-2004 à 18:12:36  profilanswer
 

Taiche : si je ferme le printwriter, le browser refuse de charger la page (comme quand je ferme le socket)
therier : j'ai déja essayé, mais merci quand meme
Darklord : merci, je vais regarder ca.

n°630680
bill.fr
Posté le 04-02-2004 à 10:19:53  profilanswer
 

Je suis pas forcément très réveillé, mais ça me semble normal pour l'histoire des blocages multiprocessus... tu fais un readLine dans le corps du main, donc il attend de traiter ta requete avant de réellement passer le socket au processus Page.
 
-> fais ton s = ss.accept(), puis directement new page(s).start(), et ton traitement avec le readline mets le dans le processus détaché...


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°1839846
mTex
Posté le 19-01-2009 à 09:14:04  profilanswer
 

Salut, j'ai egalement realise un server http multithread en java. Le code source peut peut etre t'aider.


Message édité par mTex le 19-01-2009 à 09:15:12
n°1839848
flo850
moi je
Posté le 19-01-2009 à 09:18:07  profilanswer
 

joli , tu gagne un point pelle pour avoir déterrer un sujet de 2004


---------------

n°1839863
jagstang
Pa Capona ಠ_ಠ
Posté le 19-01-2009 à 10:41:24  profilanswer
 

spam... C'est la mode ces temps


Message édité par jagstang le 19-01-2009 à 10:41:38

---------------
What if I were smiling and running into your arms? Would you see then what I see now?  

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Mini serveur HTTP

 

Sujets relatifs
[ACCESS2000] problème de partage de l'application sur le serveur.pb sql-serveur et clause in
Purge Log Sql Serveur ???[Java] Sockets et http
ip du serveurbug de ASP - SQL serveur ?? tabulations et espaces aléatoires...
table lockee sous serveur sql 2000Cherche script qui affiche l'espace serveur restant
[Python - Resolu - Soluce Inside] Serveur http, recuperation d'url 
Plus de sujets relatifs à : Mini serveur HTTP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR