Le#serveur#HTTP#:#Dialogue#avec#le#Client!
"#$"%!&!'()*+,-.)$+(!/-!0#1!
2$(+!345#67!8#(9/:$(!;$*/<=$+!#)!
1. Introduction,
3#>!?">!@!3#!A#*B#-*!C??"!D!+()!-(!,+-1=#!+19#.)$E!&!,F-(#!5/*)7!B+->!,#B#6!*G/EE$*:#*!B+>!
.+((/$>>/(.#>! >-*! =#! 5*+)+.+=#! C??"HIJK7! 5/*! =#>! :G)L+,#>! MN?! #)! "OA?! B-#! #(! .+-*>7!
G=G:#()>! (G.#>>/$*#! 5+-*! .+:5*#(,*#! =F/*.L$)#.)-*#! ,#! 5/<#>! P#1! ,Q(/:$R-#>! /B#.7! 5/*!
#S#:5=#7! "C"7! T9/S! +-! -(#! /-)*#! )#.L(+=+<$#J! 2F/-)*#! 5/*)7! B+->! .#>! ?">! ,+$B#()! B+->!
5#*:#))*#! ,#! *G/EE$*:#*! G</=#:#()! B+>! .+((/$>>/(.#>! /.R-$>#>! #(! 5*+<*/::/)$+(J! "+-*!
.#=/7! 5+-*! =/! >-$)#7! (+->! (+->! E+./=$>#*+(>! -($R-#:#()! >-*! =#! =/(</<#! ,#! 5*+<*/::/)$+(!
U/B/J!
2. Java,et,le,Réseau,
3#! =/(</<#! ,#! 5*+<*/::/)$+(! U/B/! 5*+5+>#! ,#! (+:1*#->#>! 5*$:$)$B#>! 5+-*! G.*$*#! -(#!
/55=$./)$+(!*G>#/-J!U/B/!G)/()!-(!=/(</<#!,#!5*+<*/::/)$+(!+*$#()G!+19#)!,#!L/-)!($B#/-7!
,#>! .=/>>#>! #S$>)#()! ,G9V! 5+-*! ,GB#=+55#*! -(#! .+((#S$+(! #()*#! ,#-S! :/.L$(#>! >/(>! /B+$*!
1#>+$(! ,#! .+((/W)*#! =X#(>#:1=#! ,#! 5*$:$)$B#>! R-$! ,+$B#()! Y)*#! /55#=G#>! 5+-*! .#=/J!
Z#5#(,/()7! #)! :/=L#-*#->#:#()7! .#==#>[.$7! >+()! ,F/>>#6! 1/>! ($B#/-J! "+-*! 5/==$#*! V! .#!
5*+1=\:#7! B+->! -)$=$>#*#6! =/! .=/>>#! A#*B#*! R-$! /! G)G! ,GE$($#! 5+-*! B+->7! ,$>5+($1=#! ,/(>! =/!
=$1*/$*$#! 5#$5J9/*! ]B+$*! =#>! *#>>+-*.#>! E+-*($#>! /B#.! .#! ?"^J! Z#==#[.$! 5#*:#)! ,#! <G*#*! =/!
.+((#S$+(! /-! >#*B#-*! ,#5-$>! -(#! :/.L$(#! ,$>)/()#7! 5-$>! ,X$()#*/<$*! /B#.! .#))#! :/.L$(#!
,$>)/()#!B$/!=XG.L/(<#!,#!=$<(#>!,#!)#S)#J!!
3/!.*G/)$+(!,F-(#!$(>)/(.#!,#!=/!.=/>>#!5#*:#)!,#!.+(>)*-$*#!-(!]+19#)^!>#*B#-*J!3/!E+(.)$+(!
,#!.*G/)$+(!]=#!.+(>)*-.)#-*^!*#_+$)!%!5/*/:\)*#>!E/.-=)/)$E>&!
port!&!R-$!#>)!=#!5+*)!>-*!=#R-#=!=#!>#*B#-*!>#!:#)!#(!/))#()#J!"/*!,GE/-)7!=#!5+*)!-)$=$>G!
#>)!=#!I%`a!
verbose! &! R-$! 5#*:#)! ,F/B+$*! -(! >#*B#-*! @!1/B/*,!DJ! "/*! ,GE/-)7! .#! 5/*/:\)*#! #>)!
E/=>#J!
3/! B/=#-*! *#(B+QG#! 5/*! =#! .+(>)*-.)#-*! ,#! A#*B#*! #>)! -(! +19#)! >#*B#-*! ./5/1=#! ,#! =$*#! #)!
,XG.*$*#!,#>!./*/.)\*#>!,#5-$>!+-!B#*>!>+(!.=$#()J!3#>!:G)L+,#>!,X-(!>#*B#-*!.*GG!/$(>$!>+()!
,G.*$)#>!.$[,#>>+->&!
acceptConn()!>#!:#)!#(!/))#()#!,F-(#!.+((#S$+(J!Z#))#!:G)L+,#!1=+R-#!=X#SG.-)$+(!
)/()!R-X$=!(FQ!/!5/>!,#!.=$#()!,$>5+($1=#J!
readline()! =$)! -(#! =$<(#! 5*+B#(/()! ,-! .=$#()! ]-(#! =$<(#! >$<($E$/()! -(#! >-$)#! ,#!
./*/.)\*#>!)#*:$(G#!5/*!-(!./*/.)\*#!(#P=$(#^J!
writeline()!G.*$)!-(#!=$<(#!B#*>!=#!.=$#()7!/B#.!-(!(#P=$(#!V!=/!E$(J!b)$=#!5+-*!#(B+Q#*!
-(!:#>>/<#!)#S)#!/B#.!>/-)!V!=/!5*+.L/$(#!=$<(#J!
write()!G.*$)!=#!.+()#(-!,X-(!1-EE#*!B#*>!=#!.=$#()7!>/(>!/9+-)#*!-(!(#P=$(#J!T!-)$=$>#*!
>)*$.)#:#()! 5+-*! =F#(B+$#! ,F-(#! =+(<-#! >G*$#! ,#! ,+((G#>! ]#SJ! -(! E$.L$#*^! +-! ,#>!
,+((G#>!1$(/$*#>J!
closeConn()!)#*:$(#!=/!.+((#S$+(!/B#.!=#!.=$#()!
close()!E#*:#!=#!>#*B#-*!]$J#J!/..#5)#*!-(#!.+((#S$+(!(X#>)!5=->!5+>>$1=#^J!
b(!#S#:5=#!,F-)$=$>/)$+(!,#!.#))#!.=/>>#!].c)G!:/.L$(#!,$>)/()#^!#>)!,+((G!.$!,#>>+->&!
1. import peip.Server; //import de la classe Server du package peip
2. import java.io.*;
3.
4. public class Test {
5. public static void main(String[] args) {
6. Server myserver = null;
7.
8. try {
9. myserver = new Server(1234, true);
10. } catch (IOException e) {
11. System.out.println("Problem while creating server!");
12. System.exit(-1); // code erreur <> 0 pour signaler qu'il y a un
pbm
13. }
14.
15. try {
16. dialogue(myserver);
17. } catch (IOException e) {
18. System.out.println("Problem while talking to the client!");
19. } finally {
20. System.out.println("Killing the server");
21. myserver.close();
22. }
23. }
24.
25. // methode de dialogue correspondant à l'écho par le serveur d'une
(seule) chaine lue cad reçue (envoyée) du client
26. private static void dialogue (Server myserver) throws IOException {
27. myserver.acceptConn();
28. String creply = null;
29. creply = myserver.readline();
30. if (creply != null) { //if not EOF, then the client is still there
and we can write to him
31. myserver.writeline(creply);
32. creply = null;
33. }
34. myserver.closeConn();
35. }
36. }!
3$>)$(<!IJ!A#*B#-*!>$:5=#!
2/(>!.#)!#S#:5=#7!=/!=$<(#!I!$:5+*)#!=/!.=/>>#!A#*B#*!,#!=/!=$1*/$*$#!5#$5J!3/!=$<(#!d!,G.=/*#!
-(#!B/*$/1=#!R-$!5#-)!.+()#($*!-(#!$(>)/(.#!,#!=/!.=/>>#!A#*B#*7!#)!=X$($)$/=$>#!V!(-==J!N(>-$)#7!
=#!>#*B#-*!#>)!.*GG7!G.+-)/()!>-*!=#!5+*)!I%`a!#)!,G>/.)$B/()!=#!:+,#!@!B#*1+>#!D!]=$<(#!e^J!
"-$>!=#!,$/=+<-#!/B#.!-(!.=$#()!5+)#()$#=!#>)!5+>>$1=#!5/*!=#!1$/$>!,#!=/!:G)L+,#!@!,$/=+<-#]^!
DJ!
3/! :G)L+,#! @! ,$/=+<-#! D! ,G.=#(.L#! -(#! #S.#5)$+(! #(! ./>! ,X#**#-*! .#! R-$! ,#:/(,#! ,+(.!
=X-)$=$>/)$+(!,-!1=+.!)*QJJJ./).LJ!2#!5=->7!=#!@!</*1/<#!.+==#.)+*!D!,#!U/B/!(XG)/()!5/>!./5/1=#!
,#!<G*#*!.+**#.)#:#()!=/!E#*:#)-*#!,#!*#>>+-*.#>!#S)#*(#>7!=X-)$=$>/)$+(!,-!1=+.!@!E$(/==Q!D!
5+-*! #SG.-)#*! -(#! E#*:#)-*#! @! :/(-#==#! D! ,#! (+)*#! >#*B#-*! ]#)! ,+(.! ,#! )+-)#>! =#>!
*#>>+-*.#>!,X#()*G#!>+*)$#!R-X$=!-)$=$>/$)^!5/*!=/!:G)L+,#!.=+>#!#>)!(G.#>>/$*#J!
3#! >#*B#-*! R-#! =X+(! 5$=+)#! /-! >#$(! ,#! =/! :G)L+,#! ,$/=+<-#! B/! /..#5)#*! =#>! ,#:/(,#>! ,#!
.+((#S$+(! ,#>! .=$#()>! /B#.! /..#5)Z+((! ]=$<(#! %f^J! 3/! =$<(#! %e! =$)! -(#! =$<(#! #(B+QG#! 5/*! =/!
:/.L$(#!,$>)/()#!].=$#()!.+((#.)G^7!R-X+(!*#(B+$#!]#(!G.L+g^!/-!.=$#()!]=$<(#!`I^!-($R-#:#()!
>$! =/! .L/W(#! *#_-#! #>)! ,$EEG*#()#! ,#! @! (-==! D! ]=$<(#! `K^J! N(! #EE#)7! =/! =#.)-*#! ,X-(! (-==! .+)G!
>#*B#-*!$(,$R-#!=/!*G.#5)$+(!,X-(!@!NOh!i!N(,!+E!h$=#!D!R-$!/((+(.#!R-#!=/!:/.L$(#!.=$#()#!/!
E#*:G!=/!.+((#S$+(J!
"+-*! )*/B/$==#*! /B#.! .#! >#*B#-*7! $=! >-EE$)! ,#! =/(.#*! =#! 5*+<*/::#! ,/(>! -(! )#*:$(/=! ]#(!
$(,$R-/()! #(! +5)$+(! =X->/<#! ,#! .#))#! =$1*/$*$#! 5#$5J9/*7! B+$*! ,/(>! =/! 5/*)$#! #S#*.$.#>^! #)! ,#!
=/(.#*! #(! )/()! R-#! .=$#()! =/! .+::/(,#! (#)./)7! 5/*! #S#:5=#J! Z$[,#>>+->! B+->! /B#6! -(!
#S#:5=#!,#!,$/=+<-#!#()*#!(#)./)!#)!(+)*#!>#*B#-*!G.*$)!#(!U/B/!]$.$7!=/!:/.L$(#!+j!)+-*(#!=#!
>#*B#-*!#>)!/->>$!=/! :/.L$(#!+j!+(! /!=/(.G!(#)./)7! ,+(.!+(!>#!.+((#.)#!,#5-$>! (#)./)!V!@!
=+./=L+>)!D^!&!
$ netcat localhost 1234
Bonjour, il y a quelqu’un ici ?
Bonjour, il y a quelqu’un ici ?
$
3#!>#*B#-*!R-#!(+->!/B+(>!.*GG!:/*.L#!1$#(7!:/$>!$=!/!%!E+*)#>!$(.+(BG($#()>!&!
IJ .#!>#*B#-*!(#!5#-)!>#*B$*!R-F-(!>#-=!.=$#()!]$J#J!-(#!E+$>!R-F-(!.=$#()!/!G)G!>#*B$!#)!>X#>)!
,G.+((#.)G7!=#! >#*B#-*! :#-*)^J!Z#!5*+1=\:#!5#-)! Y)*#! *G>+=-! V!=F/$,#!,F-(#!1+-.=#!
$(E$($#!.c)G!>#*B#-*&!
%J -(#!>#-=#!=$<(#!5#-)[Y)*#!=-#!5/*!=#!>#*B#-*J!"-$>!=#!>#*B#-*!E/$)!-(!G.L+!,#!.#!R-F$=!/!
=-!#)!E#*:#!=/!.+((#S$+(!/B#.!=#!.=$#()J!
3#! 5*#:$#*! 5*+1=\:#! 5#-)[Y)*#! E/.$=#:#()! *G>+=-! /B#.! =F$()*+,-.)$+(! ,F-(#! 1+-.=#! while!
/-)+-*!,#!=F/55#=!V!dialogue()J!
while (true) {
dialogue(myserver);
}!
N(!#EE#)7!=X-)$=$>/)$+(!,X-(!1=+.!PL$=#!5#*:#)!=#!)*/$)#:#()!,#!5=->$#-*>!.=$#()>!>-..#>>$E>7!#)!
.X#>)!,#!.#))#!:/($\*#!=V!R-#!(+->!/==+(>!5*+.G,#*!5+-*!=#>!#S#*.$.#>!>-$B/()>J!
3. Quelques,détails,techniques,
3/! =$1*/$*$#! 5#$5! -)$=$>G#! ,/(>! =F#S#:5=#! B+->! #>)! E+-*($#! >+->! =/! E+*:#! ,X-(! E$.L$#*! 9/*!
]5#$5J9/*^J! T>>-*#6[B+->! ,X$(,$R-#*! =#! .L#:$(! B#*>! .#! E$.L$#*! 9/*J! "/*! #S#:5=#7! >$! B+->!
)*/B/$==#6!5/*!=$<(#! ,#! .+::/(,#7! B+->! -)$=$>#*#6! =#! 5/*/:\)*#![.=/>>5/)L!,#! 9/B/.! 5+-*! =/!
.+:5$=/)$+(!#)!=#!5/*/:\)*#![.5!,#!9/B/!5+-*!=X#SG.-)$+(J!
!
A$!B+)*#!$(>)/==/)$+(!U/B/!].+:5$=/)#-*^!B+->!,$)!R-#!=/!B#*>$+(!-)$=$>G#!5+-*!E/1*$R-#*!=#!J9/*!
(X#>)! 5/>! .+:5/)$1=#! /B#.! B+)*#! B#*>$+(! ,#! U/B/7! 5/>! ,#! 5/($R-#J! kG.-5G*#6! =#! E$.L$#*!
A#*B#*J9/B/! ]#(! 1/>! ,#! .#))#! 5/<#^! #)! >+$)7! *G[E/1*$R-#6! -(! 5#$5J9/*! ]#(! ,G.+::#())/()! =/!
=$<(#!I^l!+-! >$(+(7! .+:5$=#6! .#! J9/B/! #(! :Y:#! )#:5>! R-#!B+)*#!5*+5*#! 5*+<*/::#7! /5*\>!
=X/B+$*!5=/.G!,/(>!=#!:Y:#!*G5#*)+$*#J!
A$!B+->!-)$=$>#6!-(!'2N7!*GEG*#6[B+->!V!>/!,+.-:#()/)$+(!/E$(!,X/9+-)#*!=/!=$1*/$*$#!5#$5J9/*!V!
B+)*#! 5*+9#)! U/B/J! "/*! #S#:5=#7! ,/(>! =#! ./>! ,XN.=$5>#! B+->! 5+-B#6! B$>$)#*!
L))5&HHP$m$J#.=$5>#J+*<HhTnoC+Po,+o'o/,,o/(o#S)*/o=$1*/*Qo)+o:Qo5*+9#.)p%f>o.=/>>5/)
Lp`h!
4. Exercices,
IJ ;#))#6! #(! 5=/.#! =#! >#*B#-*! /B#.! -(#! 1+-.=#! $(E$($#! #)! )#>)#6[=#! /B#.! =/! .+::/(,#! (#)./)!
]9+-/()! =#! *c=#! ,#! .=$#()^J! qG*$E$#6! 1$#(! R-#! B+>! .=$#()>! >-..#>>$E>! 5#-B#()! >#! .+((#.)#*! /-!
>#*B#-*!>/(>!/B+$*!V!,#B+$*!=#!*#=/(.#*!V!.L/R-#!E+$>J!
%J ;+,$E$#6! B+)*#! >#*B#-*! 5+-*! R-X$=! =$>#! =#>! =$<(#>! #(B+QG#>!5/*! =#! .=$#()! 9->R-XV! =X+1)#()$+(!
,X-(#!=$<(#!B$,#J!r!=/!*G.#5)$+(!,#!=/!=$<(#!B$,#7!#(B+Q#6!=#!:#>>/<#!@!8$#(!*#_-J!T-!*#B+$*J!D!
#)!E#*:#6!=/!.+((#S$+(!/B#.!=#!.=$#()J!q/=$,#6!B+)*#!5*+<*/::#!/B#.!=/!.+::/(,#!(#)./)!#(!
)/()! R-#! .=$#()#J! k#=/(.#6! ]#)! BG*$E$#6! R-#! .#=/! E+(.)$+((#^! -(! (+-B#/-! .=$#()! >/(>! /B+$*!
1#>+$(!,#!=/(.#*!V!(+-B#/-!=#!>#*B#-*J!
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !