You are on page 1of 55

n lp trnh mng

Truyn file qua mng da trn Socket TCP

LI CM N
Li u tin em xin c by t lng bit n chn thnh ti thy gio Ths.
ng Duy Thng - ging vin khoa CNTT trng HBK Nng, ngi thy
trc tip ging dy v tn tnh gip , ch bo em trong xut thi gian qua.
Cm n thy lun ng vin, hng dn, nh hng v truyn th cho em
nhng kin thc v cng qu bu em c th hon thnh lun n tt nghip
ny.
Em xin chn thnh cm n cc thy gio, c gio trng HBK Nng
v c bit l cc thy c trong b mn cng ngh thng tin, nhng ngi
khng ngng truyn t cho chng em nhng kin thc qu bu trong sut qu
trnh lm n.
Di y l nhng g em tm hiu v nghin cu c trong thi gian
qua. Do tnh thc t v kin thc cn hn ch, v vy em rt mong nhn c s
ch bo cu cc thy c gio v s tham gia ng gp kin ca cc bn em
c th hon thnh tt ti ca mnh.
Mt ln na em xin chn thnh cm n !
Nng, ngy.thng .nm 2013
Sinh vin

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 1

n lp trnh mng

Truyn file qua mng da trn Socket TCP

MC LC
LI CM N.............................................................................................................................1
MC LC..................................................................................................................................2
LI NI U...........................................................................................................................4
CHNG 1: CN BN V MNG MY TNH....................................................................6
1.1. nh ngha mng my tnh.......................................................................................................6
1.2. Nhu cu pht trin mng my tnh..........................................................................................7
1.3. Phn loi mng my tnh..........................................................................................................8
1.4. Mt s topo mng thng dng................................................................................................10
1.5. Giao thc mng.......................................................................................................................11
1.5.1 Giao thc TCP...................................................................................................................................12
1.5.2 Giao thc UDP...................................................................................................................................13

1.6. Cc m hnh hot ng ca mng my tnh..........................................................................15


1.6.1. M hnh hot ng peer to peer......................................................................................................16
1.6.2. M hnh hot ng clients/ server...................................................................................................16

CHNG 2: CN BN V NGN NG LP TRNH JAVA.............................................18


2.1. Gii thiu Java........................................................................................................................18
2.2. Mt s tnh cht ca ngn ng Java......................................................................................18
2.2.1. n gin.............................................................................................................................................19
2.2.2. Hng i tng...............................................................................................................................19
2.2.3. c lp phn cng v h iu hnh................................................................................................19
2.2.4. Mnh m............................................................................................................................................20
2.2.5. Bo mt..............................................................................................................................................20
2.2.6. Phn tn.............................................................................................................................................21
2.2.7. a lung.............................................................................................................................................21
2.2.8. Linh ng...........................................................................................................................................21

2.3. Cc dng chng trnh ng dng ca Java..........................................................................21


2.3.1. Chng trnh ng dng c lp (Application)..............................................................................21
2.3.2. Chng trnh ng dng nhng(Applet).........................................................................................22
2.3.3. Chng trnh ng dng dng lai ghp............................................................................................23

2.4. Cu trc ca tp chng trnh Java......................................................................................24

CHNG 3: LP TRNH SOCKET TRONG JAVA............................................................25


3.1 Khi nim Socket.....................................................................................................................25
3.1.1 Lch s hnh thnh............................................................................................................................25
3.1.2 Nguyn l hot ng..........................................................................................................................32

3.2 Socket trong Java.....................................................................................................................35

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 2

n lp trnh mng

Truyn file qua mng da trn Socket TCP

3.2.1 Lp Java.net.Socket.................................................................................................................36
3.2.2 Chng trnh TCPEchoClient..........................................................................................................36

3.3 Mt s lp trong lp trnh Java Socket..................................................................................38

CHNG 4: XY DNG CHNG TRNH NG DNG................................................39


4.1. Gii thiu.................................................................................................................................39
4.2. Phn tch chng trnh...........................................................................................................40
4.3 C ch hot ng ca chng trnh.......................................................................................42
4.4. Giao din chng trnh...........................................................................................................43
4.4.1 Giao din pha Server........................................................................................................................43
4.4.2 Giao din pha Client.........................................................................................................................45

4.5 Nhn xt....................................................................................................................................46

KT LUN..............................................................................................................................48
Ti liu tham kho.........................................................................................................................49
Ti liu ting Vit.........................................................................................................................................49
Ti liu ting Anh.........................................................................................................................................49
Ti liu khc.................................................................................................................................................49

Ph lc.....................................................................................................................................50
M ngun chng trnh ng dng................................................................................................50
1. M ngun chng chnh pha Server........................................................................................................50
2. M ngun pha Clients..............................................................................................................................54

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 3

n lp trnh mng

Truyn file qua mng da trn Socket TCP

LI NI U
Hin nay vn ton cu ho thng tin v tc pht trin ca khoa hc
cng ngh din ra mt cch nhanh chng, mt k nguyn mi c m ra; k
nguyn ca x hi ha thng tin. Cng ngh thng tin v truyn thng pht trin
a th gii chuyn sang thi i mi thi i ca cng ngh thng tin. Vic
nm bt v ng dng Cng ngh thng tin trong cc lnh vc khoa hc, kinh t,
x hi em li cho cc doanh nghip v cc t chc nhng thnh tu v li
ch to ln.
My tnh tr thnh cng c c lc v khng th thiu ca con ngi.
Cc t chc, cng ty hay cc c quan cn phi xy dng h thng mng my
tnh cho ring mnh trao i d liu gia cc b phn. D liu c truyn i
trn mng phi m bo: d liu c chuyn ti ch nhanh chng v ng
n. Hu ht d liu c truyn qua mng l truyn di dng file.
Nhm tm hiu thu o mt trong s cc phng php truyn file qua
mng em chn ti "Tm hiu lp trnh Socket TCP trong Java v ng dng
truyn file qua mng".
Vi lp trnh socket TCP s bt buc cc my phi c ni mng vi
nhau. Ta thy cc my mun trao i d liu qua mng, chng s to ra mi
pha mt socket v trao i d liu bng cch c/ghi t socket. Khi mt chng
trnh to ra mt socket, mt nh danh dng s (nh danh dng s ny cn c
gi l s hiu cng) s c gn cho socket. Vic gn s hiu cng ny cho
socket c th c thc hin bi chng trnh hoc h iu hnh. Trong mi gi
tin m socket gi i c cha hai thng tin xc nh ch n ca gi tin:
+ Mt a ch mng xc nh h thng s nhn gi tin.
+ Mt s nh danh cng ni cho h thng ch bit socket no trn
n s nhn d liu.
Ni dung n tt ny c gng lm r v lp trnh socket TCP v xy dng
chng trnh ng minh ha v truyn file qua mng bng ngn ng lp trnh
Java.
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 4

n lp trnh mng

Truyn file qua mng da trn Socket TCP

ti gm phn m u, bn chng v kt lun.


Chng 1: Trnh by nhng kin thc cn bn v mng my tnh : nh
ngha, phn loi, cc loi giao thc mng, cc m hnh hot ng ca mng my
tnh.
Chng 2: Gii thiu v Java, cc tnh cht, cc dng chng trnh ng
dng ca Java, cu trc ca tp chng trnh Java
Chng 3: Khi nim v socket, socket trong java v mt s lp trong lp
trnh java socket.
Chng 4: Xy dng chng trnh ng dng truyn file qua mng: M
hnh v mt s giao din chng trnh pha server v pha client.
Tip theo l kt lun, ph lc v ti liu tham kho.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 5

n lp trnh mng

Truyn file qua mng da trn Socket TCP

CHNG 1: CN BN V MNG MY TNH


1.1. nh ngha mng my tnh
Mng my tnh l mt tp hp cc my tnh c ni vi nhau bi ng
truyn theo mt cu trc no v thng qua cc my tnh trao i thng tin
qua li cho nhau.
ng truyn l h thng cc thit b truyn dn c dy hay khng dy
dng chuyn cc tn hiu in t t my tnh ny n my tnh khc. Cc tn
hiu in t biu th cc gi tr d liu di dng cc xung nh phn (on off). Tt c cc tn hiu c truyn gia cc my tnh u thuc mt dng sng
in t. Ty theo tn s ca sng in t c th dng cc ng truyn vt l
khc nhau truyn cc tn hiu. y ng truyn c kt ni c th l dy
cp ng trc, cp xon, cp quang, dy in thoi, sng v tuyn ... Cc ng
truyn d liu to nn cu trc ca mng. Hai khi nim ng truyn v cu
trc l nhng c trng c bn ca mng my tnh.

Hnh 1.1- Mt m hnh cc my tnh lin kt trong mng


1.2. Nhu cu pht trin mng my tnh
Ngy nay, khi my tnh c s dng mt cch rng ri v s lng my
tnh trong mt vn phng hay c quan c tng ln nhanh chng th vic kt
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 6

n lp trnh mng

Truyn file qua mng da trn Socket TCP

ni chng tr nn v cng cn thit v s mang li nhiu hiu qu cho ngi s


dng.
Vi mt lng ln v thng tin, nhu cu x l thng tin ngy cng cao,
mng my tnh tr nn qu quen thuc i vi chng ta trong mi lnh vc
nh: khoa hc, qun s, quc phng, thng mi, dch v, gio dc...
Ngi ta thy c vic kt ni cc my tnh thnh mng cho chng ta
nhng kh nng mi to ln nh:
- S dng chung ti nguyn: nhng ti nguyn (nh thit b, chng trnh,
d liu) khi c tr thnh cc ti nguyn chung th mi thnh vin ca mng
u c th tip cn c m khng quan tm ti nhng ti nguyn u.
- Tng tin cy ca h thng: ngi ta c th d dng bo tr my mc,
lu tr (backup) cc d liu chung v khi c trc trc trong h thng th chng
c th c khi phc nhanh chng. Trong trng hp c trc trc trn mt trm
lm vic th ngi ta cng c th s dng nhng trm khc thay th.
- Nng cao cht lng v hiu qu khai thc thng tin: khi thng tin c
th c s dng chung th n mang li cho ngi s dng kh nng t chc li
cc cng vic vi nhng thay i v cht nh:
+ p ng nhng nhu cu ca h thng ng dng kinh doanh hin i.
+ Cung cp s thng nht gia cc d liu.
+ Tng cng nng lc x l nh kt hp cc b phn phn tn.
+ Tng cng truy nhp ti cc dch v mng khc nhau ang c cung
cp trn th gii.
Vi nhu cu i hi ngy cng cao ca x hi nn vn k thut trong
mng l mi quan tm hng u ca cc nh tin hc. V d nh lm th no
truy xut thng tin mt cch nhanh chng v ti u, trong khi vic x l thng
tin trn mng qu nhiu, i khi c th lm tc nghn v gy ra mt thng tin
mt cch ng tic. Hin nay, vic lm sao c c mt h thng mng chy
tht tt, tht an ton vi li ch kinh t cao ang rt c quan tm.
1.3. Phn loi mng my tnh
Do hin nay mng my tnh c pht trin khp ni vi nhng ng dng
ngy cng a dng cho nn vic phn loi mng my tnh l mt vic rt phc
tp.
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 7

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Da theo phm vi phn b ca mng ta c th phn ra cc loi mng nh


sau:
- Mng cc b LAN (Local Area Network): Mng LAN l mt nhm
my tnh v cc thit b truyn thng mng c ni kt vi nhau trong mt khu
vc nh nh mt ta nh cao c, khun vin trng i hc, khu gii tr
Cc mng LAN thng c c im sau:
+ Bng thng ln, c kh nng chy cc ng dng trc tuyn nh xem
phim, hi tho qua mng.
+ Kch thc mng b gii hn bi cc thit b
+ Chi ph cc thit b mng LAN tng i r
+ Qun tr n gin

Hnh 1.2- M hnh mng cc b LAN


- Mng th MAN (Metropolitan Area Network): Mng MAN gn ging
nh mng LAN nhng gii hn ca n l mt thnh ph hay mt quc gia.
Mng MAN ni kt cc mng LAN l vi nhau thng qua cc phng tin
truyn dn khc nhau (cp quang, cp ng, sng.) v cc phng thc truyn
thng khc nhau.
c im ca mng MAN:
+ Bng thng mc trung bnh, phc v cc ng dng cp thnh ph
hay quc gia nh chnh ph in t, thng mi in t, cc ng dng ca cc
ngn hng
+ Do MAN ni kt nhiu LAN vi nhau nn phc tp cng tng ng
thi cng tc qun tr s kh khn hn.
+ Chi ph cc thit b mng MAN tng i t tin.
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 8

n lp trnh mng

Truyn file qua mng da trn Socket TCP

- Mng din rng WAN (Wide Area Network): Mng WAN bao ph vng
a l rng ln c th l mt quc gia, mt lc a hay ton cu. Mng WAN
thng l mng ca cc cng ty a quc gia hay ton cu, in hnh l mng
internet. Do phm vi rng ln ca mng WAN nn thng thng mng WAN l
tp hp cc mng LAN, WAN ni li vi nhau bng cc phng tin nh: v
tinh (satellites), sng biva (microwave), cp quang, cp in thoi.
c im ca mng WAN:
+ Bng thng thp, d mt kt ni, thng ch ph hp vi cc ng dng
offine nh e-mail, web, ftp
+ Phm vi hot ng rng ln khng gii hn
+ Do kt ni ca nhiu LAN, WAN li vi nhau nn mng rt phc tp v
c tnh ton cu nn thng l c t chc quc t ng ra qun tr
+ Chi ph cho cc thit b v cc cng ngh mng WAN rt t tin

Hnh 1.3- M hnh mng din rng(WAN)


- Mng Internet: L trng hp c bit ca mng WAN, n cung cp cc
dch v ton cu nh mail, web, chat, ftp v phc v min ph cho mi ngi.
1.4. Mt s topo mng thng dng
Theo nh ngha v mng my tnh, cc my tnh c ni vi nhau bi
cc ng truyn vt l theo mt kin trc no , cc kin trc gi l
Topology. Thng thng mng c ba loi kin trc l: mng hnh sao (Star
Topology), mng dng tuyn (Bus Topology), mng dng vng(Ring Topology).

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 9

n lp trnh mng

Truyn file qua mng da trn Socket TCP

- Ring Topology: Mng c b tr vng trn, ng dy cp c thit k


lm thnh mt vng khp kn, tn hiu chy theo mt chiu no . Cc nt
truyn tn hiu cho nhau ti mt thi im c mt nt m thi. Mng dng
vng c thun li l c th ni rng ra xa nhng ng dy phi khp kn, nu
b ngt mt ni no th ton b h thng cng b ngng.

Hnh 1.4- Ring Topology


- Bus Topology: dng Bus tt c cc nt c phn chia mt ng
truyn chnh (bus). ng truyn ny c gii hn hai u bi mt loi u
ni c bit gi l Terminator. Khi mt nt truyn d liu, tn hiu c qung
b trn hai chiu ca bus, mi nt cn li u c nhn tn hiu trc tip. Loi
mng ny dng dy cp t, d lp t. Tuy vy cng c nhng bt li l s c
s n tc giao thng khi di chuyn vi lu lng ln v khi c s hng hc
on no th rt kh pht hin, nu mt nt ngng hot ng s nh hng
ti ton b h thng.

Hnh 1.5- Bus Topology


Hnh 1.6- Star Topology
- Star Topology: Mng hnh sao bao gm mt b tp trung v cc nt
thng tin. Cc nt thng tin c th l cc trm cui, cc my tnh hay cc thit b
khc ca mng. Mng hot ng theo nguyn l ni song song nn nu c mt
nt b hng mng vn hot ng bnh thng. Mng c th m rng hoc thu
hp ty theo yu cu ca ngi s dng, tuy nhin m rng ph thuc v kh
nng ca trung tm.
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 10

n lp trnh mng

Truyn file qua mng da trn Socket TCP

1.5. Giao thc mng


Giao thc mng l mt tp cc quy tc, quy c trao i thng tin gia
hai h thng my tnh hoc hai thit b my tnh vi nhau. Ni mt cch hnh
thc th giao thc mng l mt ngn ng c cc my tnh trong mng s dng
trao i d liu vi nhau. C nhiu loi giao thc c s dng trong mng
my tnh nh: Apple Talk, DLC, NetBEUI, nhng hin nay giao thc c s
dng ph bin nht trong mng my tnh l giao thc TCP/IP.
1.5.1 Giao thc TCP

nh ngha: TCP(Transmission Control Protocol) l giao thc hng kt


ni, n cung cp mt ng truyn d liu tin cy gia hai my tnh. Tnh tin
cy th hin vic n m bo d liu c gi s n c ch v theo ng
th t nh khi n c gi.
Khi hai ng dng mun giao tip vi nhau mt cch tin cy, chng s to ra
ng kt ni gia chng v gi d liu thng qua ng ny. Cch trao i d
liu ny tng t nh cch chng ta gi in thoi. Hy ly v d khi bn nhc
in thoi ln v quay s ca ngi h hng ny, lc d mt kt ni s c to
ra gia in thoi ca bn v ngi h hng, sau bn gi v nhn d liu
(di dng m thanh) bng cch ni v nghe qua in thoi ca bn. Ton b
vic thc hin kt ni v truyn d liu gia hai my in thoi c thc hin
bi cng ty in thoi thng qua cc trm v ng dy in thoi, nhim v
duy nht ca bn l quay s cung cp cho nh cung cp dch v in thoi
bit s in thoi bn mun lin lc. Ging nh vy, trong vic truyn d liu
qua mng th TCP ng vai tr nh nh cung cp dch v in thoi v d trn,
n lm nhim v to kt ni v truyn d liu gia hai im giao tip m
bo d liu khng b mt v ti ch theo ng trt t nh khi chng ta gi.
Tnh tin cy ca ng truyn c th hin hai im sau:
Mi gi tin cn gi s n c ch. lm c iu ny th mi ln
pha gi gi xong mt gi tin n s ch nhn mt xc nhn t bn nhn
rng nhn c gi tin. Nu sau mt khong thi gian m pha gi
khng nhn c thng tin xc nhn phn hi th n s pht li gi tin.
Vic pht li s c tin hnh cho n khi vic truyn tin thnh cng,
tuy nhin sau mt s ln pht li max no m vn cha thnh cng
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 11

n lp trnh mng

Truyn file qua mng da trn Socket TCP

th pha gi c th suy ra l khng th truyn tin c v s dng vic


pht tin.
Cc gi tin s c trnh ng dng nhn c theo ng th t nh
chng c gi. Bi cc gi tin c th c dn i trn mng theo nhiu
ng khc nhau trc khi ti ch nn th t khi ti ch ca chng c
th khng ging nh khi chng c pht. Do m bo c th sp
xp li gi tin pha nhn theo ng th t nh khi chng c gi,
giao thc TCP s gn vo mi gi tin mt thng tin cho bit th t ca
chng trong c khi tin chung c pht nh vy bn nhn c th sp
xp li cc gi tin theo ng th t ca chng.
Nh vy c th thy TCP cung cp cho chng ta mt knh truyn thng
im- im phc v cho cc ng dng i hi giao tip tin cy nh HTTP
(HyperText Transfer Protocol), FTP (File Tranfer Protocol), Telnet. Cc ng
dng ny i hi mt knh giao tip tin cy bi th t ca d liu c gi v
nhn l yu t quyt nh n s thnh cng hay tht bi ca chng. Hy ly v
d khi HTTP c s dng c thng tin t mt a ch URL, d liu phi
c nhn theo ng th t m chng c gi nu khng th m bn nhn
c c th l mt trang HTML vi ni dung ln xn hoc mt file zip b li v
khng gii nn.
1.5.2 Giao thc UDP
nh ngha: UDP (User Datagram Protocol) l giao thc khng hng kt
ni, n gi cc gi d liu c lp gi l datagram t my tnh ny n my tnh
khc m khng m bo vic d liu s ti ch.
phn trc chng ta thy trong giao thc TCP khi hai chng trnh
mun giao tip vi nhau qua mng chng to ra mt kt ni lin kt hai ng
dng v trao i d liu qua kt ni . Tri li giao thc UDP khi hai ng
dng mun giao tip vi nhau chng khng to ra kt ni m ch n thun gi
cc gi tin mt cch c lp t my ny ti my khc.Cc gi tin nh vy gi l
cc datagram. Vic gi cc gi tin nh vy tng t nh vic chng ta gi th
qua ng bu in. Cc bc th bn gi c lp vi nhau, th t cc th l
khng quan trng v khng c g m bo l th s n c ch. Trong truyn
thng bng UDP th cc datagram ging nh cc l th, chng cha thng tin
cn gi i cng thng tin v a ch ch m chng phi n, tuy nhin chng
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 12

n lp trnh mng

Truyn file qua mng da trn Socket TCP

khc vi cc l th mt im l nu nh trong vic gi th, nu l th ca bn


khng n c ch th n s c gi tr li ni gi nu trn l th bn c
a ch gi cn UDP s khng thng bo g cho pha gi v vic l th c
ti c ch hay khng.
Vy nu UDP l mt giao thc khng m bo giao tip tin cy th ti sao
ngi ta li dng chng. iu l bi nu nh giao thc TCP m bo mt kt
ni tin cy gia cc ng dng th chng cng i hi nhiu thi gian truyn
tin do chng phi kim tra cc header cc gi tin m bo th t cc gi tin
cng nh pht li cc gi tin khng n c ch do trong mt s trng
hp th iu ny khng cn thit. Di y l mt s trng hp trong giao
thc khng hng kt ni l thch hp hn so vi giao thc hng kt ni:
Khi ch mt gi d liu cn truyn i v vic n c ch hay khng
l khng quan trng, s dng giao thc UDP s loi b c cc th tc to v
hy kt ni. So snh mt cht chng ta s thy giao thc hng kt ni TCP
phi dng n by gi tin gi mt gi tin do n cn pht v nhn cc gi tin
yu cu v chp nhn kt ni cng nh cc gi tin yu cu v xc nhn vic hy
kt ni, trong khi giao thc khng kt ni UDP ch s dng duy nht mt gi
tin chnh l gi tin cha d liu cn chuyn i.
Chng ta ly v d v mt server ng h, nhim v ca n l gi thi gian
hin ti ca n cho cc ng dng trn client khi c yu cu. Nu gi tin cha
thi gian b tht lc trn ng truyn v khng ti c ch th client cng s
khng i hi server phi gi li gi tin bi khi gi tin c pht li ln
hai v ti c client th thng tin thi gian cha trong n khng cn ng
na. Nu client to ra hai yu cu v nhn c cc gi tin tr li khng theo
ng th t m server gi th client cng khng gp phi vn g bi n
hon ton c th suy ra c rng cc gi khng c chuyn n ng th
t bng cch tnh thi gian c cha trong cc gi. Trong trng hp ny tnh
tin cy ca TCP l khng cn thit bi n lm gim hiu sut v c th cn tr
hot ng ca server.
Trng hp th hai chng ta xem xt vic s dng giao thc UDP l cc
ng dng i hi cht ch v thi gian nh cc ng dng nghe audio thi gian
thc. Trong trng hp ny vic hng ti mt knh giao tip tin cy khng
phi l u im m ngc li l mt nhc im bi nu vic phi ch cho
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 13

n lp trnh mng

Truyn file qua mng da trn Socket TCP

khi mt gi tin b mt c nhn c th gy ra nhng tc ng d nhn thy


hoc khin chng trnh phi tm ngng. Vi cc ng dng ny giao thc khng
hng kt ni c pht trin v chng lm vic tt hn hn. Chng ta c th
tham kho ng dng RealAudio, trong ngi ta s dng mt giao thc khng
hng kt ni truyn cc d liu m thanh qua mng.
Bng sau so snh s khc bit gia hai ch giao tip hng kt ni v
khng hng kt ni.
Ch c hng kt ni(TCP)
Tn ti knh giao tip o gia hai bn
giao tip
D liu c gi i theo ch bo
m: C kim tra li truyn li gi tin
li hay mt bo m th t n ca
cc gi tin

Ch khng hng kt ni(UDP)


Khng tn ti knh giao tip o gia
hai bn giao tip
D liu c gi i theo ch
khng bo m: Khng kim tra li,
khng pht hin khng truyn li gi
tin b li hay mt, khng bo m th
t n ca cc gi tin
D liu chnh xc, tc truyn chm D liu khng chnh xc, tc
truyn nhanh.
Thch hp cho cc ng dng cn tc
, khng cn chnh xc cao: Truyn
m thanh, hnh nh
1.6. Cc m hnh hot ng ca mng my tnh
M hnh hot ng ca mng my tnh c hai loi:
- M hnh hot ng peer to peer
- M hnh hot ng clients/server
1.6.1. M hnh hot ng peer to peer
Khng tn ti bt k my chuyn dng hoc cu trc phn cp gia cc
my tnh. Mi my tnh u bnh ng v c vai tr nh nhau. Thng thng
mi my tnh hot ng vi c vai tr my khch v my phc v. V vy khng
c my no c ch nh qun l ton mng. Ngi dng tng my t quyt
nh d liu no trn my ca mnh s c chia s dng chung trn mng.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 14

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Hnh 1.7- M hnh peer to peer


1.6.2. M hnh hot ng clients/ server
Trong mng hot ng theo m hnh Clients/Server c mt hoc nhiu
my c nhim v cung cp mt s dch v cho cc my khc trong mng. Cc
my ny c gi l server cn cc my tnh c phc v gi l my clients.

Hnh 1.8- M hnh mng Clients/Server


y l m hnh tng qut, trn thc t server c th c ni vi nhiu
server khc tng hiu qu lm vic. Khi nhn c yu cu t client, server
c th x l yu cu hoc gi tip yu cu va nhn c cho mt server
khc.
My server s thi hnh cc nhim v do my client yu cu. C rt nhiu
dch v trn mng hot ng theo nguyn l nhn cc yu cu t client sau
x l v tr li cc kt qu cho client yu cu.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 15

n lp trnh mng

Truyn file qua mng da trn Socket TCP

CHNG 2: CN BN V NGN NG LP TRNH JAVA


2.1. Gii thiu Java
Java l mt ngn ng lp trnh c Sun Microsystems gii thiu vo
thng 6 nm 1995. T , n tr thnh mt cng c lp trnh ca cc lp trnh
vin chuyn nghip. Java c xy dng trn nn tng ca C v C++. Do vy n
s dng cc c php ca C v cc c trng hng i tng ca C++.
Vo nm 1991, mt nhm cc k s ca Sun Microsystems c nh thit
k mt ngn ng lp trnh iu khin cc thit b in t nh Tivi, my git,
l nng, Mc d C v C++ c kh nng lm vic ny nhng trnh bin dch
li ph thuc vo tng loi CPU.
Trnh bin dch thng phi tn nhiu thi gian xy dng nn rt t. V
vy mi loi CPU c mt trnh bin dch ring l rt tn km. Do nhu cu
thc t i hi mt ngn ng chy nhanh, gn, hiu qu v c lp thit b tc l
c th chy trn nhiu loi CPU khc nhau, di cc mi trng khc nhau.
Oak ra i v vo nm 1995 c i tn thnh Java. Mc d mc tiu ban
u khng phi cho Internet nhng do c trng khng ph thuc thit b nn
Java tr thnh ngn ng lp trnh cho Internet.
2.2. Mt s tnh cht ca ngn ng Java
- n gin
- Hng i tng
- c lp phn cng v h iu hnh
- Mnh
- Bo mt
- Phn tn
- a lung
- ng

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 16

n lp trnh mng

Truyn file qua mng da trn Socket TCP

2.2.1. n gin
Nhng ngi thit k mong mun pht trin mt ngn ng d hc v quen
thuc vi a s ngi lp trnh. Do vy Java loi b cc c trng phc tp ca
C v C++ nh:
- Loi b thao tc con tr, thao tc nh ngha chng ton t
- Khng cho php a k tha m s dng cc giao din
- Khng s dng lnh goto cng nh file header (.h)
- Loi b cu trc struct v union
2.2.2. Hng i tng
Java l ngn ng lp trnh thun hng i tng. Mi chng trnh vit
trn Java u phi c xy dng trn cc i tng. Nu trong C/ C++ ta c
th to ra cc hm (khng gn vi i tng no) th trong Java ta ch c th to
ra cc hm (phng thc) gn lin vi mt i tng. Trong Java khng cho
php cc i tng c tnh nng a k tha m thay bng cc giao tip
2.2.3. c lp phn cng v h iu hnh
i vi cc ngn ng lp trnh truyn thng nh C/ C++, phng php
bin dch c thc hin nh sau :

Hnh 2.1- Cch bin dch chng trnh truyn thng


Vi mi nn phn cng khc nhau, c mt trnh bin dch khc nhau
bin dch m ngun chng trnh cho ph hp vi nn phn cng y. Do vy,
khi chy trn mt nn phn cng khc bt buc phi bin dch li m ngun
i vi cc chng trnh vit bng Java, trnh bin dch Java s bin dch
m ngun thnh dng bytecode. Sau , khi chy chng trnh trn cc nn phn
cng khc nhau, my o Java dng trnh thng dch Java chuyn m bytecode

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 17

n lp trnh mng

Truyn file qua mng da trn Socket TCP

thnh dng chy c trn cc nn phn cng tng ng. Do vy, khi thay i
nn phn cng, khng phi bin dch li m ngun Java

Hnh 2.2- Dch chng trnh Java


2.2.4. Mnh m
Java l ngn ng yu cu cht ch v kiu d liu.
- Kiu d liu phi khai bo tng minh.
- Java khng s dng con tr v cc php ton con tr.
- Java kim tra tt c cc truy nhp n mng, chui khi thc thi m bo
rng cc truy nhp khng ra ngoi gii hn kch thc
- Trong cc mi trng lp trnh truyn thng, lp trnh vin phi t mnh cp
pht b nh. Trc khi chng trnh kt thc th phi t gii phng b nh
cp. Vn ny sinh khi lp trnh vin qun gii phng b nh xin cp trc
. Trong chng trnh java, lp trnh vin khng phi bn tm n vic cp
pht b nh. Qu trnh cp pht, gii phng c thc hin t ng, nh dch v
thu nht nhng i tng khng cn s dng na (garbage collection).
- C ch by li ca java gip n gin ha qu trnh x l li v hi phc sau
li.
2.2.5. Bo mt
Java cung cp mt mi trng qun l thc thi chng trnh vi nhiu mc
kim sot tnh an ton:
- mc th nht, d liu v cc phng thc c ng gi bn trong lp.
Chng ch c truy xut thng qua cc giao din m lp cung cp
- mc th hai, trnh bin dch kim sot m bo m l an ton, v
tun theo cc nguyn tc ca java
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 18

n lp trnh mng

Truyn file qua mng da trn Socket TCP

- Mc th ba c m bo bi trnh thng dch. Chng kim sot xem


bytecode c m cc quy tc an ton trc khi thc thi
- Mc th t kim sot vic np cc lp vo b nh gim st vic vi
phm gii hn truy xut trc khi np vo h thng.
2.2.6. Phn tn
Java c thit k h tr cc ng dng chy trn mng bng cc lp
mng (java.net). Hn na, java h tr nhiu nn chy khc nhau nn chng
c s dng rng ri nh l cng c pht trin trn Internet, ni s dng nhiu
nn khc nhau
2.2.7. a lung
Chng trnh java cung cp gii php a lung(Multithreading) thc thi
cc cng vic ng thi. Chng cng cung cp gii php ng b gia cc
lung. c tnh h tr a lung ny cho php xy dng cc ng dng trn mng
chy hiu qu
2.2.8. Linh ng
Java c thit k nh mt ngn ng ng p ng cho nhng mi
trng m. Cc chng trnh Java cha rt nhiu thng tin thc thi nhm kim
sot v truy nhp i tng lc chy. iu ny cho php kh nng lin kt ng
m.
2.3. Cc dng chng trnh ng dng ca Java
2.3.1. Chng trnh ng dng c lp (Application)
Chng trnh ng dng dng c lp l mt chng trnh ngun m sau khi
dch c th thc hin trc tip. Chng trnh c lp trong java bt u thc
hin v kt thc phng thc main() ging nh hm main() trong
chng trnh C/ C++
Khi xy dng mt ng dng c lp cn lu :
1. To lp mt lp c nh ngha bi ngi s dng c phng thc
main() gi l lp chnh v bo m n c nh ngha ng theo ng
nguyn mu c quy nh bi java
2. Kim tra xem liu tp chng trnh c tn trng vi tn ca lp chnh v
ui l .java hay khng
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 19

n lp trnh mng

Truyn file qua mng da trn Socket TCP

3. Dch tp chng trnh ngun .java to ra cc tp m bytecode c


ui .class tng ng
4. S dng chng trnh thng dch ca Java chy chng trnh dch
2.3.2. Chng trnh ng dng nhng(Applet)
Applet l loi chng trnh Java c bit m khi thc hin m lnh ca
chng phi c nhng trong vo mt trang web (cc file c ui HTM hoc
HTML ), cc th HTML s c trnh duyt Web thc thi ( nh Netscape hoc
Internet Explorer) cn on m lnh ca Applet s c my o Java nhng
trong trnh duyt web thc thi. Cng c th dng trnh Appletviewer ca JDK
thc thi mt Applet.
Mt chng trnh dng Applet bao gm hai tp: .java v .html
Chu trnh hot ng cu Applet:
Chng trnh ng dng Applet c thc hin nh sau:
- Khi mt applet c np v chy bi Web Browser th n s gi thng
ip init() cng vi cc d liu, kch thc ca Window chng trnh
applet khi ng.
- Khi bt u thc hin, Web Browser thng bo cho applet bt u bng
cch gi phng thc start().
- Khi ri khi trang Web c cha applet th chng trnh applet ny nhn
c thng ip stop() dng chng trnh.
Hot ng ca chng trnh applet c m t nh hnh di:

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 20

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Hnh 2.3- Chu trnh hot ng ca applet


Trong :
- init(): phng thc ny c gi khi applet c np ln u v c xem nh
l ton t to lp cho applet.
- start(): c gi khi applet bt u thc hin, xut hin khi:
+ applet c np xung
+ applet c duyt li
- stop(): c gi khi applet dng thc hin, nhng cha b loi b khi b nh.
- destroy(): c gi ngay trc khi applet kt thc, khi trnh duyt Web c
ng li v applet b loi b khi b nh.
2.3.3. Chng trnh ng dng dng lai ghp
Java cho php xy dng mt chng trnh c th chy c c Web
Browser (Applet) cng nh mt ng dng c lp (Application). xy dng
c mt chng trnh nh th phi:
- nh ngha lp ng dng m rng t lp Applet
- Trong lp ng dng phi c hm main()
2.4. Cu trc ca tp chng trnh Java
Tp chng trnh java c th c cc phn c c t nh sau:
- nh ngha mt gi l ty chn thng qua nh danh ca gi (package).
Tt c cc lp, cc interface c nh ngha trong tp cha gi ny u
thuc gi . Nu b qua nh ngha gi th cc nh ngha tp ny s thuc
vo gi mc nh.
- Mt s lnh nhp import
- Mt s nh ngha lp v interface c th nh ngha theo th t bt
k. Trong thng l lp public
Nh vy, cu trc ca mt tp chng trnh Java c th khi qut nh sau:
// Filename: New.java
// Phn 1: ty chn
// nh ngha gi
package Tngi;
// Phn 2: 0 hoc nhiu hn
// cc gi cn s dng
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 21

n lp trnh mng

Truyn file qua mng da trn Socket TCP

import java.io.*;
// Phn 3: 0 hoc nhiu hn
// nh ngha cc lp v cc interface
public class New{...}
class C1 {...}
interface I1 {...}
// ...
class Cn {...}
interface Im {...}

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 22

n lp trnh mng

Truyn file qua mng da trn Socket TCP

CHNG 3: LP TRNH SOCKET TRONG JAVA


3.1 Khi nim Socket
3.1.1 Lch s hnh thnh
- Khi nim Socket xut hin ln u tin vo khong nm 1980 ti trng
i hc Berkeley M. l mt chng trnh c thit k gip my tnh ni
mng khp mi ni c th trao i thng tin vi nhau. Lc u c c s
dng trn cc my Unix v c tn gi l Berkeley Socket Interface.
- Tip cng vi s pht trin ca cc ng dng mng, socket c h tr
trong nhiu ngn ng lp trnh v chy trn nhiu nn tng h iu hnh khc
nhau. V d nh WinSock dng cho cc ng dng ca Microsoft, Socket++ dng
cho cc lp trnh vin s dng Unix
- C cu hi t ra l ti sao chng ta li s dng Socket trong truyn thng
gia cc my tnh. tr li cu hi ny chng ta phi quay li thi im trc
khi Socket ra i:
Trong thi k ny trn h thng Unix vic vo/ra d liu c thc hin
theo m hnh 3 bc Open-Read/Write-Close. thc hin vic vo ra d liu
trc ht chng trnh phi to ra mt kt ni vi ti nguyn m n mun giao
tip(ti nguyn ny c th l bn phm, b nh trong, file), sau khi kt ni
c thc hin, chng trnh c th trao i d liu thng qua cc thao tc
Read- a d liu t ti nguyn kt ni vo chng trnh x l hoc
Write- a d liu x l t chng trnh ra ti nguyn. Mt v d in hnh
cho kiu vo/ra ny l thao tc vi file d liu m chng ta kh quen thuc
trong cc ngn ng lp trnh: Khi ngi lp trnh mun thao tc vi mt file d
liu h tin hnh nh sau:
+ M file cn s dng vi cc quyn thch hp trn
+ Thc hin vic c d liu t file x l hay a d liu x l
ghi vo file.
+ ng file sau khi s dng xong.
- Khi vic trao i d liu gia cc chng trnh v kt ni mng c a
vo h thng Unix ngi ta mong mun vic trao i d liu gia cc chng
trnh cng s c thc hin theo m hnh ba bc ca vo/ra d liu nhm
trnh cho ngi lp trnh nhng kh khn khi giao tip vi cc tng bn di
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 23

n lp trnh mng

Truyn file qua mng da trn Socket TCP

tng ng dng. lm c iu , socket c s dng. Khi hai chng trnh


mun giao tip vi nhau, mi chng trnh s to ra mt socket, chng ng vai
tr l cc im cui trong mt kt ni v thc hin trao i thng tin gia hai
chng trnh. i vi ngi lp trnh, socket c xem nh mt ti nguyn h
thng m chng trnh cn giao tip nn chng trnh c th thc hin giao tip
vi socket theo m hnh ba bc ging nh vic vo/ra d liu. Nh vy s ra
i ca socket gn lin vi nhu cu truyn thng my tnh. Sau y chng ta s
a ra nh ngha c th v socket.
nh ngha
- C nhiu nh ngha khc nhau v socket ty theo cch nhn ca ngi s
dng.
- Mt cch tng qut nht c th nh ngha: Mt Socket l mt im cui
trong mt kt ni gia hai chng trnh ang chy trn mng
- Nhn trn quan im ca ngi pht trin ng dng ngi ta c th nh
ngha Socket l mt phng php thit lp kt ni truyn thng gia mt
chng trnh yu cu dch v (c gn nhn l Client) v mt chng trnh
cung cp dch v (c gn nhn l server) trn mng hoc trn cng mt my
tnh.
- i vi ngi lp trnh, h nhn nhn Socket nh mt giao din nm gia
tng ng dng v tng khc trong m hnh mng OSI c nhim v thc hin
vic giao tip gia chng trnh ng dng vi cc tng bn di ca mng.

Hnh 3.1- M hnh OSI rt gn

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 24

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Hnh 3.2- M hnh Socket


- Tuy nhin, cc lp trnh vin hin nay gn nh lun lun b ngn cn to
socket ring bng cch th cng bi d bn dng Java, serlet hay CGI, PHP
c th bn s khng bao gi m c cng mt cch tng minh. Thay vo
cc lp trnh vin s dng th vin socket c h tr sn bi cc ngn ng lp
trnh. Nh vy cc socket vn tn ti kt ni cc ng dng ca ngi dng,
nhng cc chi tit ca socket c n trong nhng lp su hn mi ngi
khng phi ng chm n.
S hiu cng ca Socket

- c th thc hin cc cuc giao tip, mt trong hai qu trnh phi cng
b s hiu cng ca socket m mnh s dng. Mi cng giao tip th hin mt
a ch xc nh trong h thng. Khi qu trnh c gn mt s hiu cng, n c
th nhn d liu gi n cng ny t cc qu trnh khc. Qu trnh cn li cng
c yu cu to ra mt socket.
Ngoi s hiu cng, hai bn giao tip cn phi bit a ch IP ca nhau. a
ch IP gip phn bit my tnh ny vi my tnh kia trn mng TCP/IP. Trong
khi s hiu cng dng phn bit cc qu trnh khc nhau trn cng mt my
tnh.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 25

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Hnh 3.3- Cng trong Socket


Trong hnh trn, a ch ca qu trnh B1 c xc nh bng hai thng tin
(Host B, Port B1):
a ch my tnh c th l a ch IP dng 203.162.88.162 hay l a ch cho
dng trn min nh www.hpu.edu.vn
S hiu cng gn cho Socket phi duy nht trn phm vi my tnh , c
gi tr trong khong t 0 n 65535 (16 bit). Trong thc t th cc s hiu cng
t 0 n 1023 (gm c 1024 cng) dnh cho cc dch v ni ting nh: http:
80, telnet:21, ftp:23,. Nu chng ta khng phi l ngi qun tr th nn dng
t cng 1024 tr ln.
Cc cng mc nh ca 1 s dch v mng thng dng:
S hiu cng

Qu trnh h thng

Dich v Echo

21

Dch v FTP

23

Dich v Telnet

25

Dch v E-mail(SMTP)

80

Dch v Web(HTTP)

110

Dch v E-mail(POP)

M hnh Clients/Server s dng Socket ch hng ni kt TCP


Giai on 1: Server to socket, gn s hiu cng v lng nghe yu cu kt
ni.
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 26

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Socket(): Server yu cu to mt socket c th s dng cc dch v


ca tng vn chuyn.
Bind(): Server yu cu gn s hiu cng (port) cho socket.
Listen(): Server lng nghe cc yu cu ni kt t cc client trn cng
c gn.
Giai on 2: Client to socket, yu cu thit lp mt ni kt vi Server.

Socket(): Client yu cu to mt socket c th s dng cc dch v


ca tng vn chuyn, thng thng h thng t ng gn mt s hiu cng cha
s dng cho socket ca Client.
Connect(): Client gi yu cu ni kt n server c a ch IP v Port
xc nh.
Accept(): Server chp nhn ni kt ca client, khi mt knh giao tip
o c hnh thnh, client v server c th trao i thng tin vi nhau thng qua
knh o ny
Giai on 3: Trao i thng tin gia Client v Server.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 27

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Sau khi chp nhn yu cu ni kt, thng thng server thc hin lnh
read() v ngh cho n khi c thng ip yu cu(Reaquest Message) t
client gi n.
Server phn tch v thc thi yu cu. Kt qu s c gi v client bng
lnh write().
Sau khi gi yu cu bng lnh write(), client ch nhn thng ip kt
qu (Reply Message) t server bng lnh read().
Trong giai on ny, vic trao i thng tin gia client v server phi tun
th giao thc ca ng dng (Dng thc v ngha cc thng ip, quy tc bt
tay, ng b ha). Thng thng client s l ngi gi yu cu n server
trc.
Nu chng ta pht trin ng dng theo cc protocol nh ngha sn,
chng ta phi tham kho v tun th ng nhng quy nh ca giao thc. Ngc
li, nu chng ta pht trin mt ng dng clients/server ring ca mnh, th cng
vic u tin chng ta phi thc hin l i xy dng protocol cho ng dng.
Giai on 4: Kt thc phin lm vic

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 28

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Cc cu lnh read(), write() c th c thc hin nhiu ln(k hiu


bng hnh ellipse).
Knh o s b xa khi server hoc client ng socket bng lnh close().

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 29

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Nh vy ton b tin trnh din ra nh sau:

3.1.2 Nguyn l hot ng


- Ta thy khi hai ng dng mun trao i d liu qua mng, chng s to
ra mi pha mt socket v trao i d liu bng cch c/ghi t socket.
hiu r cch thc socket trao i d liu chng ta hy xem xt nguyn l hot
ng ca chng.
- Trc ht chng ta hy xem xt lm th no cc socket c th xc nh
c nhau. Khi mt chng trnh to ra mt socket, mt nh danh dng s
(nh danh dng s ny cn c gi l s hiu cng) s c gn cho socket.
Vic gn s hiu cng ny cho socket c th c thc hin bi chng trnh
hoc h iu hnh ty theo cch socket c s dng nh th no. Trong mi
gi tin m socket gi i c cha hai thng tin xc nh ch n ca gi tin:
+ Mt a ch mng xc nh h thng s nhn gi tin.
+ Mt s nh danh cng ni cho h thng ch bit socket no trn
n s nhn d liu.
- Nh hai thng tin ny m gi tin c th n c ng my tnh cha
socket m n cn n (nh a ch mng) v c phn phi n ng socket
ch (nh a ch cng ca socket ch).
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 30

n lp trnh mng

Truyn file qua mng da trn Socket TCP

- Di gc lp trnh cc socket thng lm vic theo cp, mt socket


ng vai tr lm server cn cc socket khc ng vai tr nh clients. Socket
pha server xc nh mt cng cho giao tip mng, sau ch nghe yu cu m
client gi ti n bng client socket. Do cc cng cho server socket phi c
bit bi cc chng trnh client. V d server FTP s dng mt socket nghe
ti cng 21 do nu mt chng trnh client mun giao tip vi server FTP n
cn phi kt ni n socket c s hiu cng 21.
- Nh vy s hiu cng ca socket pha server c xc nh bi chng
trnh, ngc li cng cho client socket c xc nh bi h iu hnh. Khi mt
socket pha client gi mt gi tin ti socket pha server th trong gi tin c
cha thng tin v a ch ca h thng client v cng ca socket pha client nn
server hon ton c th gi thng tin phn hi cho client.
- Chng ta c th khi qut qu trnh trao i d liu thng qua cc socket
nh sau:
+ Chng trnh pha server to ra mt socket, socket ny c chng
trnh gn vi mt cng trn server. Sau khi c to ra socket ny (ta gi l
socket pha server) s ch nghe yu cu t pha clients.
+ Khi chng trnh pha clients cn kt ni vi mt server, n cng to
ra mt socket, socket ny cng c h iu hnh gn vi mt cng. Chng
trnh client s cung cp cho socket ca n (ta gi l socket pha client) a ch
mng v cng ca socket pha server v yu cu thc hin kt ni (nu chng
trnh nh s dng giao thc hng kt ni) hoc truyn d liu (nu chng
trnh s dng giao thc khng hng kt ni)
+ Chng trnh pha server v chng trnh pha clients trao i d
liu vi nhau bng cch c t socket hoc ghi vo socket ca mnh. Cc socket
hai pha nhn d liu t ng dng v ng gi gi i hoc nhn cc d liu
c gi n v chuyn cho chng trnh ng dng bi socket c hai pha u
bit c a ch mng v a ch cng ca nhau.
- bc th hai chng ta thy chng trnh ng dng phi la chn giao
thc m n nh s dng trao i d liu. Tu theo vic chng ta s dng
giao thc no (TCP hay UDP) m cch thc x l trc yu cu ca clients c
th khc.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 31

n lp trnh mng

Truyn file qua mng da trn Socket TCP

- Sau y chng ta s xem xt chi tit cch thc trao i d liu ca socket
vi tng loi giao thc.
Socket h tr TCP
a. pha Server: Khi mt ng dng trn server hot ng n s to ra mt
socket v ng k vi server mt cng ng dng v ch i yu cu kt ni t
pha clients qua cng ny.

Hnh 3.4-Clients gi yu cu n server

Hnh 3.5- Server chp nhn yu cu v to mt socket phc v clients


b. pha clients: N bit a ch ca my trn server ang chy vo
cng v server ang ch nghe yu cu. Do khi mun kt ni n server, n
cng to mt socket cha a ch my client v cng ca ng dng trn my
clients ng thi clients s cung cp cho socket ca n a ch v cng ca
server m n cn kt ni v yu cu socket thc hin kt ni.
Khi server nhn c yu cu kt ni t clients, nu n chp nhn th
server s sinh ra mt socket mi c gn vi mt cng khc vi cng m n
ang nghe yu cu. S d server lm nh vy bi n cn cng c tip tc
nghe yu cu t pha clients trong khi vn cn mt kt ni vi clients.
Sau chng trnh ng dng pha server s gi thng bo chp nhn kt
ni cho clients cng thng tin v a ch cng mi ca socket m n dnh cho
clients.
c. Quay li pha clients, nu kt ni c chp nhn ngha l socket ca n
c to ra thnh cng v n c th s dng socket giao tip vi server
bng cch vit v ghi ti socket theo cch giao tip vi mt ti nguyn trn my
tnh thng thng.
Socket h tr UDP

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 32

n lp trnh mng

Truyn file qua mng da trn Socket TCP

a. pha Server: Khi mt ng dng trn server hot ng n s to ra mt


socket v ng k vi server mt cng ng dng v ch i yu cu kt ni t
pha clients qua cng ny.
b. pha Clients: N bit a ch ca my trn server ang chy vo
cng v server ang ch nghe yu cu. Do khi mun giao tip vi server, n
cng to ra mt socket cha a ch my clients v cng ca ng dng trn my
clients ng thi clients s cung cp cho socket ca n a ch v cng ca
server m n cn kt ni. Khi clients mun gi tin server n s chuyn d
liu cho socket ca mnh, socket ny s chuyn thng gi tin m client mun gi
ti server di dng mt datagram c cha a ch my server v cng m server
ang ch nghe yu cu. Nh vy khng h c mt kt ni no c thc hin
gia client vi server v server cng khng cn to ra mt socket khc kt
ni vi clients thay vo server dng ngay cng ban u trao i d liu.
3.2 Socket trong Java
* Xy dng chng trnh Client ch c ni kt
Cc bc tng qut:
- M mt socket ni kt n server bit a ch IP(hay tn min) v
s hiu cng.
- Ly InputStream v OutputStream gn vi socket.
- Tham kho protocol ca dch v nh dng ng d liu trao i
vi server.
-Trao i d liu vi server nh vo cc InputStream v OutputStream.
- ng socket trc khi kt thc chng trnh.
3.2.1 Lp Java.net.Socket
Lp socket h tr cc phng thc cn thit xy dng cc chng trnh
client s dng socket ch c ni kt. Di y l mt s phng thc
thng dng xy dng clients.
public Socket(String HostName, int PortNumber) throws IOException

Phng thc ny dng kt ni n mt server c tn l Hostname, cng


l PortNumber. Nu ni kt thnh cng, mt knh o s c hnh thnh gia
clients v server.
HostName: a ch IP hoc tn logic theo dng tn min.
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 33

n lp trnh mng

Truyn file qua mng da trn Socket TCP

PortNumber: C gi tr t 0....65535
public InputStream getInputStream()
Phng thc ny tr v InputStream ni vi Socket. Chng trnh
clients dng InputStream ny nhn d liu t server gi v
public OutputStream getOutputStream()
Phng thc ny tr v OutputStream ni vi socket. Chng trnh
client dng OutputStream ny gi d liu cho server.
public close()
Phng thc ny s ng socket li, gii phng knh o, xa ni kt gia
clients v server.
3.2.2 Chng trnh TCPEchoClient
Trn h thng UNIX, dch v Echo c thit k theo kin trc
Client/Server s dng socket lm phng tin giao tip. Cng mc nh dnh
cho Echo Server l 7, bao gm c hai ch c kt ni v khng kt ni.
Chng trnh TCPEchoClient s kt ni n EchoServer ch c kt
ni, ln lt gi n EchoServer ch c kt ni, ln lt gi n
EchoServer 10 k t t 0 n 9 ch nhn kt qu tr v v hin th chng ra
mn hnh
Hy lu chng trnh sau vo tp tin TCPEchoClient.java
Import java,io.*
Import java.net.socket;
Public class TCPEchoClient{
Public static void main(String arg[]){
Try{
Socket s=new socket(args[0],7); // Ni kt n Server
InputStream is =s.getInputStream(); // Ly InputStream
OutputStream os = s.getOutputStream();
For(int i= 0; i<=9;i++){
Os.write(i);
Int ch= is.read();
System.out.print((char)ch);
}
}
Catch(IOException ie){
System.out.println(Loi khong tao duoc socket);
}
}

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 34

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Bin dich v thc thi chng trnh nh sau:

Chng trnh ny nhn mt i s l a ch IP hay tn min ca my tnh


m EchoServer ang chy. Trong h thng mng TCP/IP mi my tnh
c gn mt a ch IP cc b l 127.0.0.1 hay c tn l localhost. Trong v d
trn, chng trnh clients kt ni n EchoServer trn cng vi my .

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 35

n lp trnh mng

Truyn file qua mng da trn Socket TCP

3.3 Mt s lp trong lp trnh Java Socket


Java h tr lp trnh mng thng qua cc lp trong gi java.net. Mt s
lp tiu biu cn dng cho lp trnh clients/server s dng socket lm phng
tin giao tip nh:
InetAddress: Lp ny qun l a ch Internet bao gm a ch IP v
tn my tnh.
Socket: H tr cc phng thc lin quan n socket cho chnng trnh
clients ch c kt ni.
ServerSocket: H tr cc phng thc lin quan n socket cho
chng trnh server ch c kt ni.
DatagramSocket: H tr cc phng thc lin quan n socket ch
khng kt ni cho c clients v server.
DatagramPacket: Lp ci t gi tin dng th tn ngi dng
(Datagram Packet) trong giao tip gia clients v server ch khng
kt ni.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 36

n lp trnh mng

Truyn file qua mng da trn Socket TCP

CHNG 4: XY DNG CHNG TRNH NG DNG


4.1. Gii thiu
Trao i d liu gia hai my tnh trong mng thc cht l s trao i d
liu gia hai chng trnh ng dng chy trn hai my tnh . Trong , mt
chng trnh c gn nhn l server v mt chng trnh c gn nhn l
client, c nhiu phng php xy dng chng trnh ng dng mng nhng
phng php s dng ph bin l lp trnh ng mng da trn c ch socket.
Trong chng ny s trnh by mt ng dng ca lp trnh socket TCP l xy
dng chng trnh truyn file qua mng gia hai my tnh bng Java Socket
TCP.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 37

n lp trnh mng

Truyn file qua mng da trn Socket TCP

4.2. Phn tch chng trnh


Chng trnh ng dng c xy dng theo m hnh clients/server.
Chng trnh bao gm hai m un server v client. Ngi s dng c th truyn
file t pha client cho server hoc ngc li.
M un pha server
To server socket v lng
nghe kt ni t client

chp nhn kt
ni t client

sai

bo li

ng
Chn file cn gi cho
client
Gi file cho client
END
ng

Gi file mi

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

sai

Trang 38

n lp trnh mng

Truyn file qua mng da trn Socket TCP

M un pha client
client to socket kt ni
n socket server

kt ni thnh
cng

sai

bo li

ng
END
Chn file cn gi cho
server
Gi file cho server

ng

Gi file mi?

sai

4.3 C ch hot ng ca chng trnh


Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 39

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Chng trnh gm hai m un. Pha server l file chng trnh c tn l


FileTransferServer.java, pha client l file chng trnh c tn l
FileTransferClient.java. Sau khi bin dch file .java ny ta nhn c

cc file .class tng ng. Chng trnh c thc thi ti du nhc h thng
theo c php
c:\>java FileTransferServer
c:\>java FileTransferClient
Chy chng trnh server mode:
Chng trnh chy pha server c ch nh chy server mode, sau
my tnh ny s ch i cc kt ni t pha clients n n. Ta phi nhp tip
port number, ng vi server mode ny th ta c th chn bt c port number
no ln hn 1024, v nhng port number di 1024 b gi trc v s dng
bi h thng (well-known ports). Chng trnh ny cng c th thc hin giao
nhn file gia mt server v nhiu my clients ng thi trong mt h thng
mng nn n s yu cu ta nhp vo s lng my client ln nht c th kt ni
n server ny.
Chy chng trnh client mode:
Tng t cho pha bn client, chng trnh s yu cu nhp vo a ch ca
server (host address), ta c th nhp a ch IP hay nhp vo tn ca my chy
server mode u c (trong trng hp trn hnh bn di th tn my chy
server mode c a ch IP trong mng LAN l 192.168.1.43). Tip tc ta s nhp
port number (s hiu cng) ca server socket ( bit) cn kt ni n.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 40

n lp trnh mng

Truyn file qua mng da trn Socket TCP

4.4. Giao din chng trnh


4.4.1 Giao din pha Server

Hnh 4.1- La chn s hiu cng ca Server v s lng Client cn kt ni

Hnh 4.2- Giao din chnh ca chng trnh pha Server

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 41

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Hnh 4.3- Giao din pha server khi chn file truyn i

Hnh 4.4- Thng bo gi file thnh cng t Server n Client

Hnh 4.5- Thng bo bn Clien ang gi file ti cho Server

Hnh 4.6- Thng bo bn nhn thnh cng file c gi t Client


4.4.2 Giao din pha Client

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 42

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Hnh 4.7- Nhp a ch my Server v s hiu cng ca Server kt ni

Hnh 4.8- Giao din chnh ca chng trnh pha Client

Hnh 4.9- Thng bo bn Server ang gi file ti cho Client

Hnh 4.10- Thng bo bn nhn thnh cng file c gi t Server


Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 43

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Hnh 4.11- Giao din pha server khi chn file truyn i

Hnh 4.12- Thng bo gi file thnh cng t Client n Server


4.5 Nhn xt
Chng trnh ng dng c la chn vit bng ngn ng Java, ta chn
Java v nhng l do sau y:
Th nht, nhng ng dng mng kiu ny s gn gng hn khi vit bng
Java, vi Java s c t dng m hn, v mi dng c th d dng gii thch vi
c nhng ngi lp trnh mi bt u.
Th hai, nhng chng trnh ng dng m hnh clients/server lp trnh
bng Java gia tng ngy cng thng dng v n c th tr thnh tiu chun
cho lp trnh mng trong vi nm ti. Java l mt ngn ng c lp nn, n c
c ch by li (iu qun cc ngoi l), c th gii quyt hu n cc li xy ra
trong qu trnh xut/nhp v nhng hot ng mng v kh nng phn lung
(thread) mnh cung cp nhng phng php n gin xy dng nhng server
mnh m.
Sinh vin thc hin: Nguyn Th Lc
Lp : 12TLT

Trang 44

n lp trnh mng

Truyn file qua mng da trn Socket TCP

KT LUN
Truyn file qua mng l mt trong nhng ng dng ph bin trn mng LAN
v Internet nh: ti xung cc file t mt my ch file xa, gi/nhn th in
t, ... Truyn file qua mng da trn Socket TCP l mt phng php truyn file
c tin cy cao bi v trc khi truyn n cn thit lp thnh cng knh truyn
d liu
Khng phi l phng php thay th hon ton nhng phng php truyn
file khc m ta tng s dng. Bn cht ca phng php truyn file da vo
Socket TCP l nhm tng thm hiu xut lm vic. ti Tm hiu lp trnh
socket TCP trong java v ng dng truyn file qua mng t c kt qu
nht nh.
V c s l thuyt, n trnh by c cc ni dung v mng my tnh,
s lc v ngn ng Java, lp trnh Socket TCP ni chung v lp trnh Socket
TCP trong Java ni ring; cc ni dung lin quan n truyn file quua mng.
V ng dng n phn tch mt cch kh chi tit c ch hot ng ca
chng trnh pha clients, pha server v ci t thnh cng chng trnh.
Java l mt ngn ng mnh m, tnh bo mt cao v c lp vi nn, do
chng trnh ng dng ca n c th d dng chy trn cc h thng khc
nhau m khng phi lp trnh li.
Tuy nhin, do hn ch v thi gian v trnh nn nhiu tnh nng ca
chng trnh cha c hon thin. Trong thi gian ti, chng trnh s c
hon thin theo hng b sung cc chc nng cho ph hp yu cu c th ca
vic truyn file qua mng, c th p dng vo thc t cuc sng.

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 45

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Ti liu tham kho


Ti liu ting Vit
[1]. Gio trnh Lp trnh Hng i tng JAVA - Ngc Anh Th Press- NXB
Thng K
[2]. JAVA Lp trnh mng - Nguyn Phng Lan v Hong c Hi - NXB Gio
Dc
[3]. Lp trnh Socket vi TCP (bn in t)
[4]. Gio trnh H thng mng CCNA- Nguyn Hng Sn - NXB Gio dc nm
2001
Ti liu ting Anh
[1]. Computer Networking - By James F. Kurose and Keith W. Ross - Addison
Wesley
[2]. IP Network Address Translation - Michael Hasenstein -1997
Ti liu khc
[1]. Website: http://quantrimang.com/
[2]. Website: http://www.planet-source-code.com/
[3]. Website: http://www.javavietnam.org/

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 46

n lp trnh mng

Truyn file qua mng da trn Socket TCP

Ph lc
M ngun chng trnh ng dng
1. M ngun chng chnh pha Server
//FileTransferServer
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FileTransferServer extends Frame {
public static String strHostAddress = "";
public static int intPortNumber = 0, intMaxClients = 0;
public static Vector vecConnectionSockets = null;
public static FileTransferServer objFileTransfer;
public static String strFileName = "",strFilePath = "";
public static Socket clientSocket = null;
public static ObjectOutputStream outToServer = null;
public static ObjectInputStream inFromServer = null;
public static void main (String [] args) throws IOException {
BufferedReader stdin = new BufferedReader(new InputStreamReader
(System.in));
System.out.print("Chon so hieu cong de ket noi: ");
System.out.flush();
intPortNumber = Integer.parseInt(stdin.readLine());
System.out.print("So luong may Client co the ket noi: ");
System.out.flush();
intMaxClients = Integer.parseInt(stdin.readLine());
objFileTransfer = new FileTransferServer();
}
public Label lblSelectFile;
public Label lblTitle;
public Label lblStudentName;
public Label lblStudentClass;
public TextField tfFile;
public Button btnBrowse;
public Button btnSend;
public Button btnReset;
public FileTransferServer () {
setTitle("Chuong trinh truyen File phia Server");

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 47

n lp trnh mng

Truyn file qua mng da trn Socket TCP

setSize(400 , 300);
setLayout(null);
addWindowListener(new WindowAdapter () { public void windowClosing
(WindowEvent e) { System.exit(0); } } );
lblTitle = new Label("Chuong trinh truyen File qua mang dua tren
Socket TCP ");
add(lblTitle);
lblTitle.setBounds(50,30,450,50);
lblSelectFile = new Label("Duong dan file can truyen:");
add(lblSelectFile);
lblSelectFile.setBounds(50,100,200,20);
lblStudentName = new Label("Sinh vien thuc hien:Pham Hong Thu");
add(lblStudentName);
lblStudentName.setBounds(130,250,200,20);
lblStudentClass = new Label("Lop : CT902");
add(lblStudentClass);
lblStudentClass.setBounds(130,270,100,20);
tfFile = new TextField("");
add(tfFile);
tfFile.setBounds(50,134,200,20);
btnBrowse = new Button("Chon File");
btnBrowse.addActionListener(new buttonListener());
add(btnBrowse);
btnBrowse.setBounds(283,133,70,20);
btnSend = new Button("Gui");
btnSend.addActionListener(new buttonListener());
add(btnSend);
btnSend.setBounds(100,200,50,20);
btnReset = new Button("Xoa");
btnReset.addActionListener(new buttonListener());
add(btnReset);
btnReset.setBounds(170,200,50,20);
show();
vecConnectionSockets = new Vector();
try {
ServerSocket welcomeSocket = new
ServerSocket(intPortNumber,intMaxClients);
while (true) {
vecConnectionSockets.addElement(new
ThreadedConnectionSocket(welcomeSocket.accept()));
Thread.yield();
}
} catch (IOException ioe) {System.out.println(ioe);}

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 48

n lp trnh mng

Truyn file qua mng da trn Socket TCP

}
public static String showDialog () {
FileDialog fd = new FileDialog(new Frame(),"Select
File...",FileDialog.LOAD);
fd.show();
return fd.getDirectory()+fd.getFile();
}
private class buttonListener implements ActionListener {
public void actionPerformed (ActionEvent ae) {
byte[] arrByteOfSentFile = null;
if (ae.getSource() == btnBrowse) {
strFilePath = showDialog();
tfFile.setText(strFilePath);
int intIndex = strFilePath.lastIndexOf("\\");
strFileName = strFilePath.substring(intIndex+1);
}
if (ae.getSource() == btnSend) {
try {
FileInputStream inFromHardDisk = new FileInputStream (strFilePath);
int size = inFromHardDisk.available();
arrByteOfSentFile = new byte[size];
inFromHardDisk.read(arrByteOfSentFile,0,size);
for (int i=0;i<vecConnectionSockets.size();i++)
{
ThreadedConnectionSocket tempConnectionSocket =
(ThreadedConnectionSocket)vecConnectionSockets.elementAt(i);
tempConnectionSocket.outToClient.writeObject("IsFileTransfered");
tempConnectionSocket.outToClient.flush();
tempConnectionSocket.outToClient.writeObject(strFileName);
tempConnectionSocket.outToClient.flush();
tempConnectionSocket.outToClient.writeObject(arrByteOfSentFile);
tempConnectionSocket.outToClient.flush();
}
JOptionPane.showMessageDialog(null,"Ban da gui thanh cong file toi
Client","Xac nhan",JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {}
}
if (ae.getSource() == btnReset) {
tfFile.setText("");
}}}
class ThreadedConnectionSocket extends Thread {
public Socket connectionSocket;
public ObjectInputStream inFromClient;

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 49

n lp trnh mng

Truyn file qua mng da trn Socket TCP

public ObjectOutputStream outToClient;


public ThreadedConnectionSocket (Socket s) {
connectionSocket = s;
try {
outToClient = new
ObjectOutputStream(connectionSocket.getOutputStream());
outToClient.flush();
inFromClient = new
ObjectInputStream(connectionSocket.getInputStream( ));
} catch (Exception e) {System.out.println(e);}
start();
}
public void run () {
try {
int intFlag = 0;
String strFileName = "";
while (true) {
Object objRecieved = inFromClient.readObject();
switch (intFlag) {
case 0:
if (objRecieved.equals("IsFileTransfered")) {
intFlag++;
}
break;
case 1:
strFileName = (String) objRecieved;
int intOption =
JOptionPane.showConfirmDialog(null,connectionSocket.getInetAddress()
.getHostName()+" dang gui "+strFileName+"!\nBan co chac chan nhan
khong?","Thong
bao",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if (intOption == JOptionPane.YES_OPTION) {
intFlag++;
} else {
intFlag = 0;
}
break;
case 2:
byte[] arrByteOfReceivedFile = (byte[])objRecieved;
FileOutputStream outToHardDisk = new FileOutputStream(strFileName);
outToHardDisk.write(arrByteOfReceivedFile);
intFlag = 0;

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 50

n lp trnh mng

Truyn file qua mng da trn Socket TCP

JOptionPane.showMessageDialog(null,"Ban da nhan thanh cong file tu


Client","Xac nhan",JOptionPane.INFORMATION_MESSAGE);
break;
}
Thread.yield();
}
} catch (Exception e) {System.out.println(e);}
}} }

2. M ngun pha Clients


//FiletransferClient
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FileTransferClient extends Frame {
public static String strHostAddress = "";
public static int intPortNumber = 0, intMaxClients = 0;
public static Vector vecConnectionSockets = null;
public static FileTransferClient objFileTransfer;
public static String strFileName = "",strFilePath = "";
public static Socket clientSocket = null;
public static ObjectOutputStream outToServer = null;
public static ObjectInputStream inFromServer = null;
public static void main (String [] args) throws IOException {
BufferedReader stdin = new BufferedReader(new InputStreamReader
(System.in));
System.out.print("Nhap dia chi cua may server de ket noi: ");
System.out.flush();
strHostAddress = stdin.readLine();
System.out.print("Nhap dia chi cong de ket noi voi may server: ");
System.out.flush();
intPortNumber = Integer.parseInt(stdin.readLine());
objFileTransfer = new FileTransferClient();
}
public Label lblSelectFile;
public Label lblTitle;
public Label lblStudentName;
public Label lblStudentClass;
public TextField tfFile;
public Button btnBrowse;
public Button btnSend;

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 51

n lp trnh mng

Truyn file qua mng da trn Socket TCP

public Button btnReset;


public FileTransferClient () {
setTitle("Chuong trinh truyen File phia Client");
setSize(400 , 300);
setLayout(null);
addWindowListener(new WindowAdapter () { public void windowClosing
(WindowEvent e) { System.exit(0); } } );
lblTitle = new Label("Chuong trinh truyen File may Client ");
add(lblTitle);
lblTitle.setBounds(50,30,450,50);
lblSelectFile = new Label("Duong dan file can truyen:");
add(lblSelectFile);
lblSelectFile.setBounds(50,100,200,20);
lblStudentName = new Label("Sinh vien thuc hien:Pham Hong Thu");
add(lblStudentName);
lblStudentName.setBounds(130,250,200,20);
lblStudentClass = new Label("Lop : CT902");
add(lblStudentClass);
lblStudentClass.setBounds(130,270,100,20);
tfFile = new TextField("");
add(tfFile);
tfFile.setBounds(50,134,200,20);
btnBrowse = new Button("Chon File");
btnBrowse.addActionListener(new buttonListener());
add(btnBrowse);
btnBrowse.setBounds(283,133,70,20);
btnSend = new Button("Gui");
btnSend.addActionListener(new buttonListener());
add(btnSend);
btnSend.setBounds(100,200,50,20);
btnReset = new Button("Xoa");
btnReset.addActionListener(new buttonListener());
add(btnReset);
btnReset.setBounds(170,200,50,20);
show();
try {
clientSocket = new Socket (strHostAddress,intPortNumber);
outToServer = new
ObjectOutputStream(clientSocket.getOutputStream());
outToServer.flush();
inFromServer = new ObjectInputStream(clientSocket.getInputStream());
int intFlag = 0;

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 52

n lp trnh mng

Truyn file qua mng da trn Socket TCP

while (true) {
Object objRecieved = inFromServer.readObject();
switch (intFlag) {
case 0:
if (objRecieved.equals("IsFileTransfered")) {
intFlag++;
}
break;
case 1:
strFileName = (String) objRecieved;
int intOption =
JOptionPane.showConfirmDialog(this,clientSocket.getInetAddress().get
HostName()+" dang gui "+strFileName+"!\nBan co chac chan nhan
khong?","Thong
bao",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);//xac
nhan
if (intOption == JOptionPane.YES_OPTION) {
intFlag++;
} else {
intFlag = 0;
}
break;
case 2:
byte[] arrByteOfReceivedFile = (byte[])objRecieved;
FileOutputStream outToHardDisk = new FileOutputStream(strFileName);
outToHardDisk.write(arrByteOfReceivedFile);
intFlag = 0;
JOptionPane.showMessageDialog(this,"Ban dong y nhan file nay tu
Server","Thong bao",JOptionPane.INFORMATION_MESSAGE);//file dc
nhan;su chung thuc, su xac thuc
break;
}
Thread.yield();
}
} catch (Exception e) {System.out.println(e);}
}
public static String showDialog () {
FileDialog fd = new FileDialog(new Frame(),"Select
File...",FileDialog.LOAD);
fd.show();
return fd.getDirectory()+fd.getFile();
}
private class buttonListener implements ActionListener {

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 53

n lp trnh mng

Truyn file qua mng da trn Socket TCP

public void actionPerformed (ActionEvent ae) {


byte[] arrByteOfSentFile = null;
if (ae.getSource() == btnBrowse) {
strFilePath = showDialog();
tfFile.setText(strFilePath);
int intIndex = strFilePath.lastIndexOf("\\");
strFileName = strFilePath.substring(intIndex+1);
}
if (ae.getSource() == btnSend) {
try {
FileInputStream inFromHardDisk = new FileInputStream (strFilePath);
int size = inFromHardDisk.available();
arrByteOfSentFile = new byte[size];
inFromHardDisk.read(arrByteOfSentFile,0,size);
outToServer.writeObject("IsFileTransfered");
outToServer.flush();
outToServer.writeObject(strFileName);
outToServer.flush();
outToServer.writeObject(arrByteOfSentFile);
outToServer.flush();
JOptionPane.showMessageDialog(null,"Ban da gui thanh cong file toi
Server","Xac nhan",JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {}
}
if (ae.getSource() == btnReset) {
tfFile.setText("");
}}}
}
class ThreadedConnectionSocket extends Thread {
public Socket connectionSocket;
public ObjectInputStream inFromClient;
public ObjectOutputStream outToClient;
public ThreadedConnectionSocket (Socket s) {
connectionSocket = s;
try {
outToClient = new
ObjectOutputStream(connectionSocket.getOutputStream());
outToClient.flush();
inFromClient = new
ObjectInputStream(connectionSocket.getInputStream( ));
} catch (Exception e) {System.out.println(e);}
start();
}

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 54

n lp trnh mng

Truyn file qua mng da trn Socket TCP

public void run () {


try {
int intFlag = 0;
String strFileName = "";
while (true) {
Object objRecieved = inFromClient.readObject();
switch (intFlag) {
case 0:
if (objRecieved.equals("IsFileTransfered")) {
intFlag++;
}
break;
case 1:
strFileName = (String) objRecieved;
int intOption =
JOptionPane.showConfirmDialog(null,connectionSocket.getInetAddress()
.getHostName()+" dang gui "+strFileName+"!\nBan co chac chan nhan
khong?","Thong
bao",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if (intOption == JOptionPane.YES_OPTION) {
intFlag++;
} else {
intFlag = 0;
}
break;
case 2:
byte[] arrByteOfReceivedFile = (byte[])objRecieved;
FileOutputStream outToHardDisk = new FileOutputStream(strFileName);
outToHardDisk.write(arrByteOfReceivedFile);
intFlag = 0;
JOptionPane.showMessageDialog(null,"Ban da gui thanh cong file toi
Server","Xac nhan",JOptionPane.INFORMATION_MESSAGE);
break;
}
Thread.yield();
}
} catch (Exception e) {System.out.println(e);}
}
}

Sinh vin thc hin: Nguyn Th Lc


Lp : 12TLT

Trang 55

You might also like