Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 9

CHNG 2

LP TRNH CLIENT\SERVER
I. Tng quan v Ip trnh mang:
1. Gii thiu
- My tnh trn Internet lin lc vi nhau dng giao thc TCP (Transission Control Protocol! ho"c
#$P (#ser $atagra Protocol!%
- &hi vi't ch()ng tr*nh +ava lin lc trn ng l, vi't - l. ng d/ng (l. a..lication! v, s0 d/ng
nh1ng l. trong g2i 3ava%net 45 truy 6u7t l. TCP8#$P (l. trans.ort!%
- Lp trnh cIient/server9 :, vi't ng d/ng trn ng g; hai ch()ng tr*nh9 ch()ng tr*nh client v,
ch()ng tr*nh server% Ch()ng tr*nh client g-i yu c<u ti ch()ng tr*nh server= ct server 60 l> yu
c<u v, tr? @'t ABa vC cho ct client% Ct server c2 th5 .h/c v/ 4;ng thDi nhiCu yu c<u cBa cc ct
client%
- Lp trnh WEB9 l, tr(Dng hE. 4"c FiGt cBa lH. tr*nh client8server% Ct client l, ct IroJser (tr*nh
duyGt JeF!= ct server l, KeF Lerver nhHn yu c<u trang JeF tM IroJser= KeF Lerver t* trang
JeF g-i vC cho IroJser= FroJer thNc thi trang JeF hiGn @'t ABa trn ,n h*nh client% IroJser v,
JeF server lin lc Aua giao thc OTTP thPng Aua cQng "c 4Rnh l, ST%
Trang KeF l, Uile %htl vi't FVng ngPn ng1 OTM: (Oy.erTe6t Mar@u. :anguage!= IroJser sW
thPng dRch trang JeF% &hi client uXn yu c<u trang JeF= dng FroJser gY vaZ chu[i c2 dng sau9
http://NameServer:port/path/fiIe.htmI
http I giao thc Iin Iac gia Browser v Web server, NameServer I tn my web server
dang thc thi, port I s hiu cng web server s dng, path/fiIe.htmI I trang web duc yu
cu.
v d/9 htt.988JJJ%icrosoUt%co8inde6%htl (@hPng c2 .ort th* "c 4Rnh l, ST!
Chu[i n,y g\i l, chu[i 4Rnh vR t,i nguyn #]: (#niUor ]esource :ocator! dng 45 6c 4Rnh
t,i nguyn trn ng Internet% ^go,i giao thc OTTP cZn c2 th5 s0 d/ng cc giao thc @hc nh( l,
_TP= `o.her= _ile= v, ^eJs% OiGn c2 cc IroJser thPng d/ng nh(9 Internet a6.lorer= ^etsca.e
^avigator= v, cc KeF Lerver nh(9IIL (Internet InUoration Lerver!= PKL (Personal KeF Lerver!=
+]#^= Tocat=b
2. Giao thc TCP/UDP
a) Giao thc TCP:
- Thi't lH. @'t nXi
c
- d? F?o d1 liGu g-i= 4(Ec nhHn chnh 6c v, 4eng th tN= ng(Ec li sW Fo l[i%
Cc giao thc Oy.erte6t TransUer Protocol (OTTP!= _ile TransUer Protocol (_TP!= v, Telnet l, nh1ng
ng d/ng dng @'t nXi TCP% My tnh lin lc dng giao thc TCP giXng nh( con ng(Di lin lc FVng
4iGn thoi%
b) Giao thc UDP:
- &hPng @'t nXi
- &hPng 4? F?o d1 liGu g-i= 4(Ec nhHn chnh 6c v, 4eng th tN=
- `-i8nhHn d1 liGu dng g2i (datagra!= cc g2i g-i8nhHn 4fc lH. vi nhau%
#$P nhanh h)n TCP v* @hPng @i5 tra d1 liGu= @hPng c<n @'t nXi% ^h1ng ng d/ng nh( hgi giD=
nhhn tin= lGnh .ing nn dng #$P% My tnh lin lc dng giao thc #CP giXng nh( con ng(Di lin
lc FVng th( tn%
:(u >9 c2 nh1ng UireJalls v, routers @hPng cho .hi. g-i8nhHn g2i #$P do adin 4j 4"t c7u h*nh
c7 g2i #$P%
3. [a chi IP, cng (Port), socket:
- [a chi IP 9 l, sX kl Fit , IP dng 45 6c 4Rnh y tnh%
- Cng 9 l, sX cm Fit , TCP8#$P dng 45 6c 4Rnh ng d/ng trn y tnh sW nhHn d1 liGu% $1
liGu @hi g-i 4i= 4(Ec g-i @n theo 4Ra cho IP cBa y nhHn v, cQng , ng d/ng trn y nhHn
s0 d/ng% LX hiGu cQng trong .h vi tM T b mp=pkp= nh1ng sX hiGu cQng tM T 4'n cTlk nn hn
ch' s0 d/ng v* cheng 4j 4(Ec dng cho nh1ng dRch v/ thPng d/ng nh( OTTP= _TP%
D[ch v Cng
_TP (truyCn 8nhHn Uile! lc
OTTP (JeF! ST
Ta:^aT (truy 6u7t y tnh tM 6a! lk
LMTP (g0i ail! lp
PqPk (l7y ail! ccT
- Socket: l, c7u trec d1 liGu l(u tr1 cc thPng tin dng 45 @'t nXi= d1 liGu 4(Ec g-i8nhHn thPng Aua
soc@et% Trong lin lc TCP= ng d/ng server @'t Fufc ft soc@et vi ft cQng c/ th5= nghra l, ng
d/ng server 4sng @> nhHn t7t c? d1 liGu g-i cho cQng 42%
Trong lin lc #$P= d1 liGu g-i8nhHn dng g2i% `2i cha sX hiGu cQng= #$P sW g-i g2i cho ng d/ng
t()ng ng%
II. S dng URL ( Uniform Resource Locator)
1. Khi nim
- :, ft tha chi'u 4'n ft t,i nguyn trn ng (4Ra cho t,i nguyn trn ng!= KeF IroJser
ho"c cc ng d/ng @hc dng #]: 45 t* t,i nguyn trn ng% `2i 3ava%net c2 l. #]: dng
45 Fi5u ditn 4Ra cho #]:
l
- #]: c2 dng chu[i g;9 giao thc dng 45 truy 6u7t t,i nguyn v, tn t,i nguyn%
u d/9
C2 th5 dng cc giao thc @hc nh(9 _ile TransUer Protocol (_TP!= `o.her= _ile= ^eJsb
- Tn t,i nguyn l, thPng tin 4<y 4B 45 6c 4Rnh t,i nguyn= thPng tin n,y .h/ thufc v,o giao thc
s0 d/ng= nh(ng th(Dng c2 cc thPng tin sau9
Host Name Tn y cha t,i nguyn%
FiIename d(Dng dvn ti t,i nguyn
Port Number LX hiGu cQng dng @hi @'t nXi
dXi vi htt.= Uilenae "c 4Rnh l, inde6%htl
2. Tao v s dng di tung URL
Phuong thc ngha
#]:(Ltring s.ec! To 4Xi t(Eng #]: tM ft chu[i #]:
#]:(Ltring .rotocol= Ltring host= int .ort=
Ltring Uile!
To 4Xi t(Eng #]: tM .rotocol= host= .ort v, tn Uile
#]:(Ltring .rotocol= Ltring host= Ltring Uile!

To 4Xi t(Eng #]: tM .rotocol= host= .ort v, tn Uile=
dng .ort "c 4Rnh
qF3ect getContent(! :7y nfi dung cBa #]:
Ltring get_ile(! :7y tn Uile cng 4(Dng dvn cBa #]:
Ltring getOost(! :7y tn y cBa #]:
int getPort(! :7y sX hiGu cQng cBa #]:
Ltring getProtocol(! :7y tn .rotocol cBa #]:
In.utLtrea o.enLtrea(! &'t nXi ti url v, - lu;ng nhH. 45 4\c thPng tin tM url
#]:Connection o.enConnection(! M- @'t nXi ti #]:
Bi tp 1: ui't ch()ng tr*nh 4\c Uile tM 6a thPng Aua JeF server
Bi tp 2: ui't ch()ng tr*nh doJnload Uile thPng Aua JeF server
III. Lp trnh TCP - S dng socket
1. Khi nim:
- Loc@et l, ft 4<u trong @'t nXi lin lc hai chiCu gi1a hai ch()ng tr*nh trn ng% `2i 3ava%net
cung c7. l. Loc@et 45 c,i 4"t @'t nXi .ha client v, LerverLoc@et 45 c,i 4"t @'t nXi .ha server%
- Loc@etLerver 4Ei= lhng nghe yu c<u @'t nXi tM Loc@etClient
&hi ch7. nhHn @'t nXi= Loc@etLerver to ft soc@et i @'t Fufc vi ft cQng @hc 45 .h/c
v/ cho client 4j @'t nXi= trong @hi Loc@etLerver vvn ti'. t/c lhng nghe yu c<u @'t nXi tM cc client
@hc%
k
Lau 42 server v, client sW lin lc vi nhau thPng Aua soc@et cBa cheng%
:(u >9
w Client dng cQng c/c Ff trn y cBa client%
w ^'u @'t nXi ti KeF Lerver th* l. #]: thch hE. h)n l. Loc@et= thNc ra l. #]: cxng sW s0
d/ng l. soc@et
2. Cu trc chuong trnh cIient
ST
T
Thao tc S dng Inh
c M- soc@et (dng 45 @'t nXi vi
server!
Loc@et cs y neJ Loc@et(zLerver^aez=
.ort!{
l M- lu;ng 4\c (dng 45 4\c dl do
server g-i!
IuUUered]eader in y neJ IuUUered]eader
(neJ
In.utLtrea]eader( cs%getIn.utLtrea(! !
!{
k M- lu;ng ghi (dng 45 g-i dl cho
server!
PrintKriter out y neJ PrintKriter
(cs%getqut.utLtrea(!= true!{
| M- lu;ng 4\c dl tM F,n .h (n'u
c<n!
IuUUered]eader stdIn y neJ
IuUUered]eader (neJ
In.utLtrea]eader(Lyste%in! !{
p `-i dl cho server out%.rintln(Ltring str!{
m :7y dl do server g-i Ltring stryin%read:ine(!{
} d2ng cc lu;ng 4\c= ghi= 42ng soc@et in%close(!{out%close(!{ sdtIn%close(!{
cs%close(!{
Ghi ch:
- ]eader= Jriter9 c2 th5 4\c ghi @ tN #nicode Aua soc@et
- d2ng lu;ng 4\c8ghi= sau 42 i 42ng soc@et
* Chuong trnh cIient mu
i.ort 3ava%io%~{
i.ort 3ava%net%~{
pubIic cIass CIient

pubIic static void main(String[] args) throws IOException



Loc@et cs y neJ Loc@et(zLerver^aez= clk|!{
PrintKriter out y neJ PrintKriter(cs%getqut.utLtrea(!= true!{
IuUUered]eader in y neJ IuUUered]eader(neJ In.utLtrea]eader( cs%getIn.utLtrea(! !!{
//cc Inh gi, nhn d Iiu vi server
out%close(!{ in%close(!{ cs%close(!{

|

3. Cu trc chuong trnh server


ST
T
Thao tc S dng Inh
c M- soc@et (dng 45 @'t nXi vi client! LerverLoc@et ss y neJ
LerverLoc@et(.ort!{
l ChD client @'t nXi v, ch7. nhHn @'t
nXi
Loc@et csy ss%acce.t(!{
k M- lu;ng 4\c (dng 45 4\c dl do
server g-i!
IuUUered]eader in y neJ IuUUered]eader
(neJ
In.utLtrea]eader( cs%getIn.utLtrea(! !
!{
| M- lu;ng ghi (dng 45 g-i dl cho
client!
PrintKrite out y neJ PrintKriter
(cs%getqut.utLtrea(!= true!{
p To lu;ng 4\c dl tM F,n .h (n'u
c<n!
IuUUered]eader stdIn y neJ
IuUUered]eader (neJ
In.utLtrea]eader(Lyste%in! !{
m `-i dl cho client out%.rintln(Ltring str!{
} :7y dl do client g-i Ltring stryin%read:ine(!{
S d2ng cc lu;ng 4\c8ghi= 42ng cc
soc@et
in%close(!{out%close(!{ sdtIn%close(!{
cs%close(!{ ss%close(!{
* Chuong trnh server mu (1 cIient)
i.ort 3ava%net%~{
i.ort 3ava%io%~{
pubIic cIass Server {
pubIic static void main(String[] args) throws IOException

LerverLoc@et ss y neJ LerverLoc@et(clk|!{
Loc@et cs y ss%acce.t(!{
PrintKriter out y neJ PrintKriter(cs%getqut.utLtrea(!= true!{
IuUUered]eader in y neJ IuUUered]eader(neJ In.utLtrea]eader(
cs%getIn.utLtrea(!!!{
//cc Inh gi/nhn d Iiu vi mt cIient
out%close(!{ in%close(!{ cs%close(!{ ss%close(!{

phc v nhiu cIient kt ni dng thi th server cn tao ra cc tiu trnh, mi tiu trnh s
gi/nhn d Iiu vi mt cIient.
* Chuong trnh server mu (nhiu cIient)
i.ort 3ava%net%~{
i.ort 3ava%io%~{
pubIic cIass Server

pubIic static void main(String[] args) throws IOException


p

LerverLoc@et ss y neJ LerverLoc@et(clk|!{ 88c2 th5 thay .ort @hc
Foolean listening y true{
Jhile (listening!

Loc@et csyss%acce.t(!{
new ServiceThread(cs).start();

ss%close(!{

//Ip ServiceThread : tiu trnh phc v cho mt cIient


i.ort 3ava%net%~{
i.ort 3ava%io%~{
pubIic cIass ServiceThread extends Thread

private Socket socket = nuII;


pubIic ServiceThread(Socket socket)

su.er(zLerviceThreadz!{
this%soc@et y soc@et{

pubIic void run()

try

PrintKriter out y neJ PrintKriter(soc@et%getqut.utLtrea(!= true!{
IuUUered]eader in y neJ IuUUered]eader( neJ
In.utLtrea]eader( soc@et%getIn.utLtrea(!!!{
//cc Inh gi, nhn d Iiu vi mt cIient
out%close(!{ in%close(!{ soc@et%close(!{
catch (Iqa6ce.tion e! e%.rintLtac@Trace(!{

* Chuong trnh server mu (nhiu cIient) (cch khc)


i.ort 3ava%net%~{
i.ort 3ava%io%~{
pubIic cIass Server extends Thread

private Socket socket = nuII;


pubIic Server(Socket socket)

su.er(zLerviceThreadz!{
this%soc@et y soc@et{

pubIic static void main(String[] args) throws IOException

LerverLoc@et ss y neJ LerverLoc@et(clk|!{ 88c2 th5 thay .ort @hc
Foolean listening y true{
m
Jhile (listening!

Loc@et csyss%acce.t(!{
new Server(cs).start();

ss%close(!{

pubIic void run()

try

PrintKriter out y neJ PrintKriter(soc@et%getqut.utLtrea(!= true!{
IuUUered]eader in y neJ IuUUered]eader( neJ
In.utLtrea]eader( soc@et%getIn.utLtrea(!!!{
//cc Inh gi, nhn d Iiu vi mt cIient
out%close(!{ in%close(!{ soc@et%close(!{
catch (Iqa6ce.tion e! e%.rintLtac@Trace(!{

Bi tp 3:
ui't ch()ng tr*nh g.tFn dng client8server dng giao thc TCP trong hai tr(Dng hE.9 server .h/c v/
cho ft client v, server .h/c v/ cho nhiCu client%
Bi tp 4 9 vi't ch()ng tr*nh doJnload= u.load
Bi tp 5 9 ui't ch()ng tr*nh Au?n l> 4i5 c2 cc chc nsng nhH.=6e=62a= s0a 4i5%
IV. Lp trnh UDP- s dng datagram
1. Khi nim
$atagra l, g2i cha d1 liGu 4(Ec #$P s0 dng 45 g-i d1 liGu Aua ng% Th tN nhHn= nfi dung
cc g2i @hPng 4? F?o giXng nh( @hi g-i% `2i 3ava%net c2 cc l. $atagraLoc@et v,
$atagraPac@et= MulticastLoc@et dng 45 g-i8nhHn g2i%
2. Cu trc chuong trnh cIient
ST
T
Thao tc S dng Inh
c M- ft datagra soc@et
dng 45 lin lc vi y
server
$atagraLoc@et soc@et y neJ $atagraLoc@et(!{
l To g2i g-i v, g-i g2i cha
d1 liGu
Fyte FuU y neJ Fytelpm{ 88?ng dng 45 cha dl
Ltring stryb{ 88d1 liGu c<n g-i
FuUystr%getIytes(!{ 88c7t dl v,o ?ng
Inetddress address y
Inetddress%getIy^ae(^aeLerver!{ 8l7y IP cBa
y server
$atagraPac@et .ac@et y neJ $atagraPac@et(FuU=
FuU%length= address=clk|!{ 88to g2i g-i
soc@et%send(.ac@et!{ 88g-i g2i
k To g2i nhHn v, nhHn g2i .ac@et y neJ $atagraPac@et(FuU= FuU%length!{
}
tr? lDi soc@et%receive(.ac@et!{
| :7y d1 liGu trong g2i Ltring received y neJ Ltring(.ac@et%get$ata(!!%tri(!{
p d2ng soc@et soc@et%close(!{
* Chuong trnh cIient mu
i.ort 3ava%io%~{
i.ort 3ava%net%~{
pubIic cIass CIient {
pubIic static void main(String[] args) throws IOException {
$atagraLoc@et soc@et y neJ $atagraLoc@et(!{
Fyte FuU y neJ Fytelpm{
Inetddress address y Inetddress%getIy^ae(^aeLerver!{
$atagraPac@et .ac@et y neJ $atagraPac@et(FuU= FuU%length= address=clk|!{
soc@et%send(.ac@et!{
.ac@et y neJ $atagraPac@et(FuU= FuU%length!{
soc@et%receive(.ac@et!{
Ltring received y neJ Ltring(.ac@et%get$ata(!!%tri(!{
//cc Inh x I d Iiu
soc@et%close(!{

3. Cu trc chuong trnh server


ST
T
Thao tc S dng Inh
c To ft datagra soc@et
dng 45 lin lc vi y
client
$atagraLoc@et soc@et y neJ
$atagraLoc@et(clk|!{
l To g2i nhHn v, nhHn g2i
do client g-i
Fyte FuU y neJ Fytelpm{
.ac@et y neJ $atagraPac@et(FuU= FuU%length!{
soc@et%receive(.ac@et!{
k :7y d1 liGu trong g2i Ltring received y neJ Ltring(.ac@et%get$ata(!!%tri(!{
| To g2i g-i v, g-i g2i tr?
lDi cho client
Ltring sendLtr ychuoi dl goi{
FuU y sendLtr%getIytes(!{
Inetddress address y .ac@et%getddress(!{
int .ort y .ac@et%getPort(!{
.ac@et y neJ $atagraPac@et(FuU= FuU%length=
address= .ort!{
soc@et%send(.ac@et!{
p d2ng soc@et soc@et%close(!{
Ct server @hPng c<n to ti5u tr*nh v* @hPng c2 @'t nXi n,o c<n duy tr* gi1a client v, server% d5 .h/c
v/ nhiCu client= ch()ng tr*nh server cho c<n dng ft vZng l". l<n l(Et nhHn cc g2i cBa cc client
v, tr? lDi% ^'u cPng viGc tr? lDi thNc hiGn tXn nhiCu thDi gian th* @hi 42 nn to ti5u tr*nh thNc hiGn
cPng viGc tr? lDi%
* Chuong trnh server mu
S
i.ort 3ava%io%~{
i.ort 3ava%net%~{
pubIic cIass Server {
pubIic static void main(String[] args) throws IOException {
$atagraLoc@et soc@et y neJ $atagraLoc@et(clk|!{
Jhile (true!
Fyte FuU y neJ Fytelpm{
$atagraPac@et .ac@et y neJ $atagraPac@et(FuU= FuU%length!{
soc@et%receive(.ac@et!{
Ltring received y neJ Ltring(.ac@et%get$ata(!!%tri(!{
//x I dI nhn
Ltring sendLtr ychuoi dl goi{
FuU y sendLtr%getIytes(!{
Inetddress address y .ac@et%getddress(!{
int .ort y .ac@et%getPort(!{
.ac@et y neJ $atagraPac@et(FuU= FuU%length= address= .ort!{
soc@et%send(.ac@et!{

soc@et%close(!{

Bi tp 6 :
ui't ch()ng tr*nh hgi thDi ti't= Fi't rVng thPng tin thDi ti't l(u trong Uile thoitiet%t6t
Bi tp 79
ui't ch()ng tr*nh hgi to ga= Fi't rVng thPng tin to gi l(u trong csdl sAl server%

You might also like