0% ont trouvé ce document utile (0 vote)
32 vues7 pages

Calculatrice TCP Client/Serveur

Transféré par

reda tlb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
32 vues7 pages

Calculatrice TCP Client/Serveur

Transféré par

reda tlb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Réseauxav

ancés
M1GL2023/
2024-TPN°4(
Socket
sTCPav
ecI
HM)

Sommai r
e
Exer
cice1:Communicat
ionJFrame/Ser
veuravecTCP 1
Exer
cice2:Opér
ati
onsmat hémat
iquesavecI
HM 3
Exer
cice3:Cal
cul
atr
icecli
ent/
ser
veuravecTCP 5

Exer
cice1:Communi
cat
ionJFr
ame/
Ser
veurav
ecTCP
Soi
tlesdeuxcl
assesJav
asui
vant
e:

i
mpor
tjav
[Link].
*;
i
mpor
tjav
a.i
o.*;
i
mpor
tjav
[Link]
l
.HashMap;

cl
assSer
veur{
pr
ivat
eHashMap<St
ri
ng,
Doubl
e>t
abl
e;

publi
cServeur(){
tabl
e=newHashMap<>( )
;
tabl
[Link]
("
badr",13.5);
tabl
[Link]
("
saleh",15.5)
;
tabl
[Link]
("
youcef",9.5)
;
tabl
[Link]
("
anes",8.5);
}

publicdoubleTr ouv
er Moy(
Str
ingname){
i
f( t
[Link]
nsKey(name)
)retur
n(tabl
[Link]
(name)
);
elsereturn-1;
}

publicstati
cvoidmai n(Str
ingargs[]
){
Serveurb=newSer veur();
[Link]
int
ln("Serveurenat t
entedeconnexion..
."
);
ServerSocketserver=nul l;
tr
y{
server=newSer verSocket (
7777);
while(tr
ue){
Socketsock=ser v
er .
accept()
;
[Link]
intln("connecte"
);
DataOutputStr
eam sockOut=newDat aOutputStr
eam([Link]
Output
Str
eam(
));
DataInputSt
ream sockI n=newDat aI
nput
Stream([Link]
Input
Str
eam())
;
Stri
ngname;

while((
name=sockI n.r
eadUTF()
)!=null
){
sockOut
.wri
teDouble(
[Link]
ouverMoy(name)
);
sockOut
.f
lush()
;
}

sockOut.
close()
;
sock.
close()
;
}
}cat
ch( I
OExceptione){
try{
ser
ver
.cl
ose(
);
}cat
ch(
IOExcept
ione2){
}}
}
}

1
i
mpor
tjav
[Link].*;
i
mpor
tjav
[Link].
* ;
i
mpor
tjav
[Link].
ev ent
.*;
i
mpor
tjav
a.i
o.*;
i
mpor
tjav
[Link].
*;

publi
cclassClientext
endsJFrameimplement sAct
ionLi
stener{
Socketsock=nul l
;
DataOutput
Stream sockOut=nul
l;
DataI
nputStr
eam sockIn=null
;
pri
vateJButt
onj bt
GetMoy=newJBut t
on("Aff
icherl
amoy enne"
);
pri
vateJTextFi
eldjt
fNom =newJTextFi
eld()
;
pri
vateJTextFi
eldjt
fMoy=newJTextFiel
d();

publi
cClient(){
JPanelpanneau=newJPanel ();
[Link](newGr i
dLayout(2,2)
);
[Link](newJLabel ("
Nom" ));
[Link](jtf
Nom) ;
[Link](newJLabel ("
Moy enne"))
;
[Link](jtf
Moy )
;
add(panneau, [Link]) ;
add(j
btGetMoy ,Bor derLayout.
SOUTH) ;
j
btGetMoy .
addAct ionListener(t
his);
}

publi
cv oidini
t(){
tr
y{sock=newSocket ("
localhost",7777);
sockOut=newDat aOutputStream([Link]
Out putSt
ream(
));
sockIn=newDat aI
nput
St r
eam( [Link]
nputStream())
;
}catch(UnknownHost Exceptione){
[Link]
.pri
ntl
n("
hostnonat t
eignabl
e: l
ocalhost")
;
[Link]
t(1)
;
}catch(IOExcepti
one){
[Link]
.pri
ntl
n("
connectionimpossi bl
eavec: l
ocal
host
")
;
[Link]
t(1)
;
}
}

@Ov erri
de
publicv oidacti
onPerformed( ActionEvente){
doubl escore=0;
try{
sockOut .wri
teUTF(j
tfNom. getText()
.t
rim())
;
sockOut .fl
ush()
;
}catch( I
OExceptionex){}
try{score=sockI n.r
eadDoubl e()
;}catch(I
OExcept
ionex){
}
i
f(scor e<0)[Link](
"N'estpast r
ouvé")
;
elsejtfMoy .
setText(
Doubl e.
toStri
ng(score))
;
}

publi
cst ati
cv oi
dmai n(Str
ing[]ar
gs){
Cli
enta=newCl i
ent()
;
a.
setTitl
e("RechercherLaMoy enne")
;
a.
setSize(350,150);
a.
ini
t()
;
a.
setLocat i
onRelati
veTo(null
);
a.
setVisibl
e(tr
ue);
}
}

2
Uneév
ent
uel
l
eexécut
ionestcommesui
t:

Modi
fi
erl
esdeuxcl
assespr
écédent
esaf
ind’
avoi
runeév
ent
uel
l
eex
écut
ioncommesui
t:

Enpassantl
enom d’unétudi
antàpar t
irduJFr
ame,l
eser
veurr
épondparunbool
éen.
t rue:siamoyenneestsupérieureouégal
ea10.
f alse:sisamoyenneestinf
érieureà10ousi
sonnom n’
exi
stepasdansl
eserv
eur
.

Exer
cice2:
Opér
ati
onsmat
hémat
iquesav
ecI
HM

Lancerl’
exécut
iondeTCPChat
.j
[Link]’
agi td’uneappl icat
iondet chatchequiestréal
iséeavec
l
abi bl
iot
hèqueswingetlessocket sTCP.C’ estuneseul eclassequir epr
ésent
eàl af oi
sle
cl
ient est l
e serveur
.Au l ancement de l ’applicati
on laf enêt r
e JFr
ame suiv
ante est
apparue(combinai
sondeJLabel,
JText
Fiel
d,JPanel
,JText
Area,
JRadi
oBut
ton,
..
.):

Pourt chatcherilfautlancerdeuxinstancesdecet t
eapplicati
on,unei nst
ancepourla
premièreper sonnequidoi tchoi
sirle bout veuretunei
on Ser nstancepourl adeuxi
ème
personnequidoi tchoi
sirl
eboutonCli .Al
ent ’
int
éri
eurdelacl
asseTCPChat,onpeutt
rouv
erun
codequi ressembleausuivant:

i
f(Ser
veur){
hostSer
ver=newServer
Socket(port
);
socket=host
Serv
er.
accept
();/
/attentecl
ient
}
3
el
se{//siCli
ent
socket=newSocket(
“l
ocal
host
”,por
t);
}
ème
Av
antl
aconnexi
onducl
i
ent(
2 per
sonne,
onal
avuesui
vant
ecot
éser
veur
):

Apr
èsl
aconnexi
onducl
i
ent
,lesdeuxper
sonnespeuv
entéchangerl
eur
smessages:

Votr
etrav
ailconsist
eàf ai
requel
quesmodif
icat
ionssurlecodepr
écédentaf
inder
éal
iser
l
esopérat
ionsarit
hmétiquesADD,MUL,SOUS,DI
VetPUI S.
LesIHMsattenduessontcommesuit:

Parexemple,l
eserv
eurenvoi
edanssonI
HM (PUI
S53) ,l
ecli
entver
radansl
esi
en(Ent
ree:
125.
0).
Lecl
ientenvoi
edanssonIHM (
MUL64),l
eser
veurver
radanslesi
en(Ent
ree:
24.
0).

4
Dansl
acl
asseTCPChat
.j
av i
a,lf
autsef
ocal
i
sersurl
apar
ti
esui
vant
educode:

i
f(i
n.r
eady(
)){
s=[Link]()
;
i
f((s!=null
)&& ( s.
length()!=0)){
i
f( s.
equals(END_CHAT_ SESSION)){
changeSt atusTS(DISCONNECTI NG,tr
ue);
}
else{
appendToChat Box("Entree:"+s+" \n"
);
changeSt atusTS(NULL, true)
;
}
}
}

Exer
cice3:Cal
cul
atr
icecl
ient
/ser
veurav
ecTCP
L’objecti
fdecetexer ci
ceestdedév elopperunecal cul
atr
icecli
ent/
serveurensebasantsur
l
essocket sTCP.
Dansl ecl i
entsousformedeJFr ame,l’ut
ili
sateursai
sir
alesdeuxopér andesetchoi
sir
aune
opération( ADD,MUL,DI V,SOUS ouPUI S).Lecal culsef er
aparl asui t
ecotéserveuret
l
’affi
chagesef eracotécli
ent(dansunJLabelparexempl e)
.
Lancerl a classe Java suiv
ante (Server
.j
av .E
a) l
le per
metd’ établ
i
rla connexi
on av ec l
a
calculatr
icemaislesopérati
onsnesontpasencor eimplémentéespourlemoment.

i
mpor
tjav
a.i
o.*
;

i
mpor
tjav
[Link]
.*;

publ
i
ccl
assSer
ver{

publ
icst
ati
cvoi
dmai
n(St
ri
ng[
]ar
gs)t
hrowsI
OExcept
ion{

Ser
ver
Socketser
ver=newSer
ver
Socket
(6666)
;

whi
le(
true){

Socketsocket=ser
ver
.accept
();

Dat
aOut
put
Str
eam dos=newDat
aOut
put
Str
eam(
socket
.get
Out
put
Str
eam(
));

Dat
aInput
Str
eam di
s=newDat
aInput
Str
eam(
socket
.get
Input
Str
eam(
));

St
ri
ngr
equet
e="
";

whi
l
e((
requet
e=di
s.r
eadUTF(
))!
=nul
l){

/
/codeaaj
out
er

5
Lancerl

exécut
iondeCal
cul
atr
ice.
j a.
av Lesv
uesat
tenduessontcommesui
t:

Vot
reobjecti
festdecompl
éterl
ecodeduser
veuraf
ind’
i
mpl
ément
ert
out
esl
esopér
ati
ons.
Uneéventuel
levueser
acommesuit:

Indi
cat
ion:util
i
serlaméthodeStr
ing.
v ueOfa
al f
indeconver
tirler
ésult
atdel’
opérat
ioncot
é
serv
eurenStr
ingpourl

env
oy eraucli
entavecl
améthodewri
teUTFdeDat
aOut
put
Str
eam.

6
7

Vous aimerez peut-être aussi