Download as pdf or txt
Download as pdf or txt
You are on page 1of 60

B LAO NG - THNG BINH V X HI

TNG CC DY NGH

GIO TRNH
Tn M un: LP TRNH MNG
NGH: QUN TR MNG MY TNH
TRNH : CAO NG NGH

(Ban hnh km theo Quyt nh s: 120/Q-TCDN ngy 25 thng 02 nm 2012


ca Tng cc Trng Tng cc dy ngh)

H Ni, Nm 2013
TUYN B BN QUYN
Ti liu ny thuc loi sch gio trnh nn cc ngun thng tin c th
c php dng nguyn bn hoc trch dng cho cc mc ch v o to v
tham kho.
Mi mc ch khc mang tnh lch lc hoc s dng vi mc ch kinh
doanh thiu lnh mnh s b nghim cm.
LI GII THIU
Ngy nay, mng my tnh tr thnh cng c khng th thiu trong tt c
cc lnh vc ca cuc sng. Vic nm bt nhng k thut qua hnh thnh
c k nng lp trnh mng c xem l yu cu cp thit i vi sinh vin
chuyn ngnh my tnh ni chung v qun tr mng ni ring. Gio trnh ny
c bin son nhm gip sinh vin lm quen vi nhng khi nim v k thut
mi trong lp trnh mng p ng c yu cu trong lp trnh mng.

H Ni, ngy 20 thng 1 nm 2013


Tham gia bin son
1. Ch bin H Vit H
2. Thnh vin Dng Hin T
MC LC
TUYN B BN QUYN................................................................................ 2
LI GII THIU ............................................................................................... 3
BI 1 : TNG QUAN V LP TRNH MNG ............................................... 7
1. Lch s pht trin ca Lp trnh mng ......................................................... 7
2. L do lp trnh mng trn nn tng .NET .................................................... 7
3. Phm vi ....................................................................................................... 8
4. a ch IP .................................................................................................... 9
5. Network stack ........................................................................................... 11
6. Port ........................................................................................................... 12
7. Internet standards ...................................................................................... 13
8 .NET framework ........................................................................................ 13
8.1. Thnh phn .NET Framework............................................................. 13
8.2. Nhng c im chnh ca .NET Framework ..................................... 15
9. Visual Studio .NET ................................................................................... 17
9.1. Phin bn Visual Studio .NET 2008.................................................... 17
9.2 Lm vic vi Visual Studio .NET 2008 ............................................... 19
9.3. Cc loi ng dng dng C# ................................................................. 21
9.4. Cu trc chng trnh C# .................................................................... 22
9.5. Cu trc th mc ca ng dng .......................................................... 24
BI 2 : VN I/O TRONG .NET................................................................ 26
1. Gii thiu v khng gian tn IO ................................................................ 26
2. Streams ..................................................................................................... 26
2.1. M ha d liu .................................................................................... 26
2.2 S dng StreamReader c tp tin Text .......................................... 30
BI 3 : LM VIC VI SOCKETS ............................................................... 41
1. Gii thiu v socket trong lp trnh mng.................................................. 41
1.1. nh ngha .......................................................................................... 41
1.2. S hiu cng (Port Number) ca socket............................................... 42
1.3. Cc ch giao tip ............................................................................ 43
2. To ng dng n gin hello world ....................................................... 44
2.1. Vit di dng n gin UDP client ................................................... 44
2.2. Vit di dng n gin UDP server .................................................. 45
3. Dng giao thc TCP/IP chuyn files .................................................... 46
4. G ri trong lp trnh mng....................................................................... 49
5. Mc Socket trong .NET ............................................................................ 50
BI 4 : KT NI VI WEB SERVER ........................................................... 61
1. Gii thiu v HTTP ................................................................................... 61
2. HTTP ........................................................................................................ 62
2.1. Yu cu trong HTTP ........................................................................... 62
2.2. p ng trong HTTP .......................................................................... 64
2.3. Kiu MIME ........................................................................................ 65
2.4. Khng gian tn System.Web ............................................................... 65
2.5. Chuyn d liu (Posting data) ............................................................. 68
2.6. Ch khi lm vic vi cookies ........................................................... 69
2.7. A WYSIWYG editor .......................................................................... 69
3. My ch Web (Web servers) ..................................................................... 71
4. Lm vic vi lp System.Net.HttpWebListener ........................................ 74
5. Trnh duyt Web di ng (Mobile Web browsers) .................................... 74
BI 5 : TRUYN THNG VI EMAIL SERVERS ....................................... 76
1. Phng thc gi v nhn Email ................................................................ 76
2. SMTP........................................................................................................ 78
3. POP3 ........................................................................................................ 83
4. Lm vic vi lp System.Web.Mail .......................................................... 84
5. Xy dng ng dng Mail .......................................................................... 84
BI 6 : TRUYN THNG VI FILE SERVER ............................................. 87
1. Tng quan v File server v truyn File .................................................... 87
1.1. Chia s File ca Microsoft. ................................................................. 87
1.2. Chia s File ca Netware .................................................................... 88
2. Truyn File ............................................................................................... 88
2.1.Cch thc dng cc cng ca FTP ....................................................... 88
2.2. Bt tay truyn File .............................................................................. 89
2.3. Truyn thng qua th mc .................................................................. 90
2.4.Tham kho cc lnh ca FTP ............................................................... 92
2.5. Cng c FTP ..................................................................................... 100
2.6. Cng c FTP vi iu khin trn Internet ......................................... 103
2.7. Mt vi cng c thc t ca FTP ...................................................... 104
2.8. FTP h tr trong .NET 2.0 ................................................................ 108
BI 7 : AN NINH MNG (FIREWALLS, PROXY SERVERS, AND
ROUTERS) .................................................................................................... 110
1. Tng quan v bo v mng ..................................................................... 110
1.1. Gii thiu v An ninh mng .............................................................. 110
1.2. Xy dng mng li an ninh ngay t u ......................................... 110
2. Tunneling trong mng doanh nghip ....................................................... 113
3. Trnh nhng cm by mng .................................................................... 114
YU CU V NH GI KT QU HC TP ........................................ 119
TI LIU THAM KHO .............................................................................. 120
M UN LP TRNH MNG
M m un : M35
V tr, tnh cht, ngha v vai tr ca Mun
- V tr: M un c b tr vo nm th 3 hc k II ca kha hc.
- Tnh cht: M un chuyn mn ngh t chn.
- ngha v vai tr : y l m un chuyn mn ngh cung cp cho sinh vin
cc k nng c bn nht v lp trnh mng, xy dng cc sn phm phn
mm phc v cng vic qun tr mng.
Mc tiu ca m un
- Trnh by nguyn l lp trnh mng, c ch hot ng ca chng trnh
thng qua cc Giao thc, hm truy xut.
- M t m hnh mng, Giao thc truy cp thng qua cc chng trnh c
ci t.
- S dng thnh tho cc cng c lp trnh Windows hoc Java lp trnh.
- Xy dng c cc ng dng mng : dch v, h thng, d liu bo v h
thng, gim st h thng, truy vn d liu.
- B tr lm vic khoa hc m bo an ton cho ngi v phng tin hc
tp.
Ni dung ca mn hc
Thi gian
S
Tn cc bi trong m un Tng L Thc Kim
TT
s thuyt hnh Tra*
1 Tng quan lp trnh mng 10 5 5
2 Vn I/O trong .NET 10 4 5 1
3 Lm vic vi Sockets 17 5 12
4 Truyn thng vi Web Servers 13 4 8 1
5 Truyn thng vi Mail Servers 16 6 10
6 Truyn thng vi File server 13 4 8 1
7 Bo mt mng :Firewalls, Proxy
11 2 8 1
Servers, and Routers
Cng 90 30 56 4
BI 1: TNG QUAN V LP TRNH MNG
M bi : M35.01
Gii thiu:
Trnh by cc vn tng qut lin quan n lp trnh mng cng nh
ngn ng s c s dng trong qu trnh lp trnh cc ng dng thc thi trn h
thng mng. Hng dn mi trng lp trnh .NET Framwork.
Mc tiu ca bi :
- Trnh by cc vn v iu hnh mng v lp trnh mng: Vn
truyn thng tin, a ch IP, Giao thc, cc tng lin lc v tnh phn cp ca cc
giao thc, thng ip.
- Trnh by c cc thnh phn ca mi trng .NET Framwork.
- Thc hin cc cu lnh c bn ca Visual Studio .NET.
- Thc hin cc thao tc an ton vi my tnh.
1. Lch s pht trin ca Lp trnh mng
Mc tiu : Trnh by c cu trc v lch s pht trin ca k thut lp
trnh mng.
Cun sch ny s gip bn pht trin cc ng dng mng vi NET, bng
cch s dng C (pht m l C-sharp) hoc ngn ng lp trnh VB.NET. N c
chia thnh ba phn ring bit: vn c bn kt ni mng, thit k ng dng
phn tn, v cc ch mng chuyn ngnh. Su chng u tin ca cun sch
bao gm cc cng ngh Internet thnh lp, chng hn nh email v World Wide
Web. Tn dng cng ngh thnh lp nh th ny cho php truy cp cng cng
ni chung ln hn cho dch v phn mm ca bn bi v hu ht ngi dng
c mt trnh duyt web hoc ng dng email trn my tnh ca h. cc bi tip
theo tho lun v thit k ng dng mng. iu ny bao gm bo mt ng dng,
hiu sut, v kh nng m rng. Cha trong cc chng ny l thc t, thc
hnh li khuyn gip nng cao cht lng tng th ca phn mm ca bn.
Vi bo mt kh khn hn, cc ng dng ca bn s t nhy cm vi hnh vi
trm cp s hu tr tu v cc thng tin c quyn. Ci tin hiu sut v kh
nng m rng c m t trong phn ny s m bo rng ng dng ca bn
vn p ng ngay c di ti cc oan nht. Cc mng phn chuyn cung cp
v s thng tin v c hai thch hp v cc cng ngh Internet tin tin. Chng
bao gm cc chng v in thoi, chp gi, hng i tin nhn, IPv6, v dch v
mi nht ca Microsoft trong lnh vc pht trin ng dng phn tn: dch v
Web v truy cp t xa.
2. L do lp trnh mng trn nn tng .NET
Mc tiu : Trnh by cc l do lp trnh mng trong mi trng .NET
Mt trong nhng quyt nh k thut u tin c thc hin bt c khi
no mt d n mi c thc hin l ngn ng s dng. NET l mt nn tng
c kh nng pht trin hu nh bt k gii php, v n cung cp h tr ng
k cho lp trnh mng. Trong thc t,. NET c h tr ni ti cho mng hn so
vi bt k nn tng khc c pht trin bi Microsoft. Cun sch ny gi nh
rng bn quyt nh pht trin vi NET, v ngn ng bn ngoi nn tng
NET s khng c tho lun trong bt k chi tit tuyt vi, ngoi tr cho mc
ch so snh. iu ny khng phi l ni rng NET l c-tt c v cui
cng tt c cc ng dng lp trnh mng. Nu ng dng ca bn chy trn mt
c s h tng UNIX ch giao tip thng qua Java gi phng thc t xa (RMI),
sau . NET khng phi l con ng i. Trong hu ht cc trng hp, tuy
nhin, bn s tm thy iu . NET l nhiu hn kh nng x l bt c iu g
bn nm vo n.
3. Phm vi
Mc tiu: Phn tch cc phn mm ng dng lp trnh mng, nguyn tc
lm vic ca cc phn mm
Mt chng trnh mng l bt k ng dng m s dng mt mng my
tnh chuyn thng tin n v i t cc ng dng khc. V d t trnh duyt
web ph bin nh Internet Explorer, hoc chng trnh m bn s dng nhn
email ca bn, phn mm iu khin tu v tr ti NASA.
Tt c cc thnh phn ny chia s phn mm kh nng giao tip vi cc
my tnh khc, v khi lm nh vy, tr nn hu ch hn cho ngi s dng
cui. Trong trng hp ca mt trnh duyt, tt c cc trang web bn truy cp
c cc tp tin c lu tr trn mt my tnh mt ni khc trn Internet.
Vi chng trnh email ca bn, bn ang giao tip vi mt my tnh ti nh
cung cp dch v Internet (ISP) ca bn hoc trao i email ca cng ty c t
chc email ca bn cho bn Cun sch ny l ch yu quan tm n vic to ra
cc chng trnh mng, khng Web cc trang web. Mc d kh nng ca nhng
trang web v cc chng trnh mng mt cch nhanh chng hi t, n l quan
trng hiu cc i s v i vi mi h thng. Mt dch v truy cp thng
qua mt trang web c th truy cp ngay lp tc ngi s dng trn nhiu nn
tng khc nhau, v ton b kin trc mng sn sng xy dng cho bn, tuy
nhin, c mt im m ti tnh nng ny ch n gin l khng kh thi
thc hin bng cch s dng cc trang web v m ti bn c chuyn sang
mng cc ng dng.
Ngi dng thng tin tng cc ng dng mng, do , cc chng
trnh ny c quyn kim sot ln hn i vi cc my tnh m h ang chy hn
mt trang web trn my tnh xem n. iu ny lm cho n c th cho mt ng
dng mng qun l cc tp tin trn my tnh a phng, trong khi mt trang
web, cho tt c cc mc ch thc t, khng th lm iu ny. Quan trng hn,
t gc kt ni mng, mt ng dng c quyn kim sot ln hn i vi lm
th no n c th giao tip vi cc my tnh khc trn Internet..
C mt ngoi l cho quy tc ny, khi thc thi ni dung (chng hn nh
mt iu khin ActiveX) c bao gm trong mt trang. Trong trng hp ny,
trang ny l kh nng ca tt c mi th c th lm mt chng trnh mng,
nhng hu ht cc trnh duyt v phn mm chng virus s cnh bo chng li
hoc ph nhn ni dung thc thi nh vy. V vy, kch bn ny thng c
chp nhn l khng kh thi v mt lng tin cng cng. a ra mt v d n
gin, mt trang web khng c th lm cho my tnh c xem n m mt kt
ni mng lin tc cho cc my tnh khc (ngoi tr cc my tnh m t cc
trang web c phc v). iu ny p dng ngay c khi cc trang web c
cha ni dung c nhng nh mt applet Java hoc phim Flash. C mt ngoi
l cho quy tc ny, khi thc thi ni dung (chng hn nh mt iu khin
ActiveX) c bao gm trong mt trang. Trong trng hp ny, trang ny l
kh nng ca tt c mi th c th lm mt chng trnh mng, nhng hu ht
cc trnh duyt v phn mm chng virus s cnh bo chng li hoc ph nhn
ni dung thc thi nh vy. V vy, kch bn ny thng c chp nhn l
khng kh thi v mt lng tin cng cng.
4. a ch IP
Mc tiu: Trnh by nguyn l a ch IP, nhn dng cc a ch IP vi
cc lp khc nhau, Phn tch cc IP c th. Phn gii c tn min tng ng
vi IP v ngc li.
Mi my tnh kt ni trc tip vi Internet phi c mt a ch duy nht
trn ton cu IP. Mt a ch IP l mt s c bn byte, m thng c vit l
bn thp phn, s thi gian cch nhau, chng hn nh 192.168.0.1.
My tnh kt ni gin tip vi Internet, chng hn nh thng qua mng cng ty
ca h, cng c a ch IP, nhng chng khng cn phi c trn ton cu duy
nht, ch c duy nht trong cng mt mng.
tm ra nhng a ch IP ca my tnh ca bn, m mt ca s giao din
iu khin h iu hnh DOS v loi ipconfig (Windows NT, 2000, and XP)
hoc winipcfg (Windows 95, 98, ME)

Trong hnh, 1.1 my tnh. c hai a ch IP: 192.618.0.1 v 81.98.59.133.


iu ny l khng bnh thng bi v my tnh ny c bit c cha hai card
mng v c kt ni vi hai mng khc nhau. Ch c mt trong nhng a ch
IP truy cp cng khai.
Nu bn nhn c a ch IP 127.0.0.1, my tnh ca bn khng kt ni
vi bt k mng no. a ch IP ny lun lun cp n cc my tnh a
phng v c s dng trong cc v d sau. Trong cng mt cch m bn c
th ni cho d mt s in thoi l a phng hoc quc t bng cch nhn vo
tin t, bn c th cho bit liu my tnh vi a ch IP trn mng cng mt khu
vc a phng hoc mt ni no khc trn Internet bng cch nhn cht ch ti
mt a ch IP. Trong trng hp cc a ch IP, h lun lun cng di,
nhng tin t nht nh (192,168 ph bin nht) ch ra rng my tnh trong mt
mng li khu vc a phng, hoc mng ni b, v khng th truy cp vo th
gii bn ngoi. Nu bn chia s kt ni Internet ca bn vi cc my tnh khc
trn mng ca bn, bn c th c mt a ch IP ring. y c th c cng
nhn l trong phm vi a ch IP c lit k trong Bng 1.1.
Dy cc a ch S lng cc a ch
10.0.0.0 n 10.255.255.255 Tn 16 t my tnh (lp A)
172.16.0.0 n 172.31.255.255 900.000 my tnh (lp B)
192.168.0.0 n 192.168.255.255 65.000 my tnh (lp C)
Bng 1.1 : Bng lit k a ch my tnh
Cng mt a ch IP ring c th tn ti trn hai my tnh trong cc mng
khu vc khc nhau cc b (LAN). iu ny khng gy ra mt vn bi v
khng phi my tnh c th trc tip lin lc vi nhau. Trong khi , mt my
tnh gii quyt t nhn c th bt u mt yu cu thng tin t mt my tnh
nc ngoi, khng c my tnh nc ngoi c th bt u mt yu cu thng tin
t mt my tnh c nhn gii quyt. Cc trng hp ngoi l cho quy tc ny s
l ni network address translation (NAT) hoc cng chuyn tip c thit lp
trn router nm thng ngun ca my tnh t nhn gii quyt. y l ni m
cc yu cu t my mc nc ngoi dnh cho cc a ch IP ca router c
chuyn tip n mt com-puter nh pha sau router. Cu tr li t my tnh ny
c chuyn tip t pha sau router my nc ngoi bt u yu cu. Nhng li
ch ca kin trc an ninh v kh nng cn bng ti, c m t chi tit hn trong
chng sau. Tt c cc my tnh c a ch IP ring phi c kt ni vi t nht
mt my tnh hoc router mng vi mt a ch IP cng cng. truy cp Internet.
m bo rng khng c hai my tnh trn Internet c a ch
cng mt IP, c mt c quan qun l trung ng c gi l Internet Assigned
Numbers Authority (IANA), v gn y Tng cng ty Internet cho tn min v
s (ICANN ). C th ny hot ng thng qua nh cung cp dch v Internet
gn a ch IP cng cng cho cc t chc v c nhn Mc d c th c phn
b mt a ch IP ti mt thi im, n l nhiu hn ph bin c phn b a
ch IP trong khi tip gip. Tip gip khi c ba lp hc: A, B, v C. Class A a
ch u l cc khi a ch IP vi byte u tin ch. Class A l hn 16 triu a
ch IP trong kch thc. a ch lp B l khi a ch IP vi byte u tin v th
hai. Lp B gi 65.024 a ch IP cng cng. 216 phm vi byte y l khng
c bi v byte cui cng ca mt a ch IP khng th l 0 hoc 255 bi v chng
c dnh ring s dng trong tng lai. a ch lp C l nhng khi a ch
IP vi byte u tin, th hai, v th ba. Class C nm gi 254 a ch cng cng,
v a ch lp C c thng xuyn giao cho cc cng ty. Mt my tnh c th
khng phi lc no cng c cng mt a ch IP. N c th c c a ch ca
n IP t my ch ISP nng ng iu khin my ch ca bn (DHCP) giao thc.
iu ny c ngha l a ch IP ca bn c th thay i mi khi bn i trc
tuyn. Mt a ch IP nh vy c gi l mt a ch IP ng. Nu bn ang
trn mt mng ni b, bn c th kim tra xem nu a ch IP ca bn l chu
trch nhim thay i bng cch kim tra "c c a ch IP t ng" nt radio
trong thuc tnh TCP / IP, theo mng trong bng iu khin.
Mc ch ca DHCP l nu c mt s lng hn ch ca IP
a ch c sn cho cc ISP, n s phn b cc thu bao ca mnh vi IP
a ch t mt h bi trn c s ai n trc c phc v trc. a ch IP l s
32-bit, vi mt gi tr ti a khong 4 t ng, v s lng cc my tnh trn th
gii ang nhanh chng tip cn con s . IPv6 l mt gii php cho vn
v c tho lun trong chng sau.
C mt nh danh c xy dng vo tt c cc card mng m l thc s
duy nht v khng th thay i. iu ny c gi l phn cng, hoc truy cp
a ch kim sot cc phng tin truyn thng (MAC). Mt a ch mu MAC
l 00-02-E3-15-59-6C ny c s dng trn mng ni b xc nh cc my
tnh khi h ng nhp vo mng. Mt h thng c gi l giao thc phn gii
a ch (ARP) c s dng kt hp a ch MAC vi a ch IP.
5. Network stack
Mc tiu: Gii thch m hnh mng (OSI). Trnh by nguyn l lm vic
ca m hnh mng.
Cc tn hiu k thut s m i d ng gia cc my tnh trn Internet
v cng phc tp. Nu khng c cc khi nim v ng gi, cc lp trnh
s nhanh chng tr thnh sa ly vi cc chi tit khng ng k. K thut ny
c s dng trong cuc sng hng ngy, ni bn c th yu cu mt ti x taxi
a bn n trung tm thnh ph. l trch nhim ca li xe taxi tm ra
con ng nhanh nht v vn hnh xe. mc thp hn mt ln na, n l
chic xe ca nh sn xut chu trch nhim m bo rng xng s c mt trong
cc ng c piston trong khi my gia tc l chn nn. ng gi l cc chi tit
phc tp ca mt nhim v n,v lp trnh vin ch cn tp trung vo nhng g
ang xy ra mt mc cao hn. Cc kt ni h thng m (OSI) m hnh
mng ngn xp c by lp ng gi, nh th hin trong Bng 1.2.
Trong lp trnh hin i, tuy nhin, mng ngn xp trng ging nh
Bng 1.3 lp quan trng nht cho bt k lp trnh vin l lp cao nht
v iu ny s kh nng d dng s dng v s ph hp vi hu ht cc ng
dng. Khi bn i xung ngn xp, thc hin tr nn kh khn hn,
mc d linh hot hn.
Lp Tn lp Giao thc
Level 7 Application layer FTP
Level 6 Presentation layer XNS
Level 5 Session layer RPC
Level 4 Transport layer TCP
Level 3 Network layer IP
Level 2 Data-Link layer Ethernet Frames
Level 1 Physical layer Voltages
Bng 1.2 : cc lp truyn thng
Lp Tn lp Giao thc
Level 4 Structured Information layer SOAP
Level 3 Messaging layer HTTP
Level 2 Stream layer TCP
Level 1 Packet layer IP
Bng 1.3: Cc lp hin i
Cun sch ny bao gm cc lp ng dng ch yu, nhng m bo c
a ra cho tt c cc lp khc nhau, khng bao gm lp vt l, m s ch p
dng cho cc k s in t.
Trong lp trnh mng, bn thng khng cn phi quan tm mnh vi cch
thc thng tin truyn gia hai my tnh, ch vi nhng g bn mun gi. Chi tit
tt hn c t cc cp thp hn v c kim sot bi hot ng ca my
tnh h thng.

6. Port
Mc tiu: Gii thch nguyn tc lm vic thng qua cng v Trnh by
cc s hiu v cng dng ca cc cng trong giao thc mng.
Nu bn mun trnh duyt Web v nhn email cng mt lc, my tnh ca
bn cn phi quyt nh bit lu lng truy cp mng email v cc trang web.
bit s khc bit, tt c cc mnh d liu trn mng c gn th vi mt cng
s: 80 cho cc trang Web, 110 cho cc email gi n. Thng tin ny c cha
trong mt trong hai giao thc iu khin ransmission (TCP) hoc User
Datagram Protocol (UDP) tiu ngay lp tc sau header IP. Bng 1.4 lit k
cc giao thc ph bin v lin kt s cng.
S hiu cng Qu trnh h thng

7 Dch v Echo
21 Dch v FTP
23 Dch v Telnet
25 Dch v E-mail (SMTP)
80 Dch v Web (HTTP)
110 Dch v E-mail (POP)
Bng 1.4 lit k cc giao thc ph bin v lin kt s cng
Qui nh :
- Khng bao gi c hai ng dng li dng cng 1 Port
- Cc Port t 0 -> 1023 : Dng cho cc ng dng quan trng trn h iu
hnh.
- Cc Port t 1024 -> 49151 : Dnh cho ngi lp trnh.
- Cc Port t 49152 -> 65535 :D tr
7. Internet standards
Mc tiu : trnh by cc chun Internet
Ch c cc tp on ln c th tr thnh thnh vin ca W3C. W3C l
chu trch nhim v ngn ng nh du siu vn bn (HTML), cascading style
sheets (CSS), ngn ng nh du m rng (XML). Khi pht trin mt ng dng
mng, iu quan trng l khng ti to li bnh xe hoc nu khng to ra mt
ng dng l khng cn thit khng tng thch vi cc ng dng khc cng
th loi. Cun sch ny thng cp n cc ti liu tiu chun, do , n l
ng gi bit ni tm thy chng. Mt tm gng sng l nng ng HTML,
c thc hin khc nhau trn Internet Explorer v Netscape Navigator. iu
ny c ngha rng hu ht cc trang web s dng HTML nng ng s khng
hot ng ng trn tt c cc trnh duyt. V vy, cc nh pht trin Web trnh
n v di chuyn v pha cng ngh qua trnh duyt, chng hn nh Macromedia
Flash v Java Applet. L do cho s sp ny l thiu tiu chun ha. Hai t
chc chu trch nhim chnh iu tit Internet tiu chun: Internet
Engineering Task Force (IETF) v World Wide Web Consortium (W3C). IETF
l mt t chc phi li nhun, trong quy nh cc giao thc c bn nht trn
Internet. Bt c ai cng c th gi mt giao thc h v n s c cng b
cng khai nh l mt yu cu cho kin (RFC) trn trang web ca h ti
www.ietf.org / rfc.html. Bng 1.5 lit k mt s ti liu quan trng RFC. W3C
(www.w3c.org) c thit k to thun li cho kh nng tng tc tiu chun
trong s cc nh cung cp. Ch c cc tp on ln c th tr thnh thnh vin
ca W3C. W3C l chu trch nhim v ngn ng nh du siu vn bn
(HTML), cascading style sheets (CSS), ngn ng nh du m rng (XML).
8 .NET framework
Mc tiu: Lit k cc thnh phn ca .NET Framwork, Gii thch cng dng
ca mi thnh phn, lp trnh cc bi tp nh trn mi trng .NET Framwork thng
qua lp trnh bin dch dng CLR.
.NET Framework l h tng c bn c chun ho, c lp ngn ng lp trnh,
cho php ngi lp trnh xy dng, tch hp, bin dch, trin khai, chy cc dch v
Web, XML, tin ch hay thc thi chng trnh a cu trc (pht trin bng cc ngn
ng lp trnh h tr .NET) trn h iu hnh c ci t .NET Framework.
8.1. Thnh phn .NET Framework

.NET Framework bao gm 2 phn chnh l Common Language Runtime (CLR)


v .NET Framework Class Library (FCL).
CLR l thnh phn chnh ca .NET Framework, qun l m (code) c th thc
thi ca chng trnh, qun l cc tin trnh, qun l tiu trnh (Threading), qun
l b nh, cung cp dch v bin dch, tch hp v tc v truy cp t xa
(Remoting).

FCL bao gm tt c cc dch v nh giao tip ngi s dng, iu khin, truy


cp d liu, XML, Threading, bo mt.
Tm li, CLR c xem nh my o .NET (.NET Virtual Machine), n c th
kim sot, np v thc thi chng trnh .NET.
Trong khi , FCL cung cp cc lp, giao tip v cc kiu gi tr, phng thc truy
cp v chc nng chnh ca h thng nh: Microsoft.Csharp, Microsoft.Jscript,
Microsoft.VisualBasic, Microsoft.Vsa, Microsoft.Win32, System (cng vi cc khng
gian tn con ca khng gian tn System).
Microsoft.Csharp : cung cp cc lp h tr bin dch v pht sinh m khi s
dng ngn ng lp trnh C#.

Microsoft.Jscript : cung cp cc lp h tr bin dch v pht sinh m khi s


dng ngn ng lp trnh J#.

Microsoft.VisualBasic : cung cp cc lp h tr bin dch v pht sinh m khi


s dng ngn ng lp trnh VisualBasic.

Microsoft.Vsa : cung cp cc gia tip cho php tch hp vi cc kch bn ca


.NET Framework vo ng dng khi bin dch hay thc thi.

Microsoft.Win32: cung cp hai lp giao tip trc tip vi ti nguyn ca h


iu hnh v System Registry.

System: bao gm cc lp c s dng nh ngha gi tr, tham chiu, bin c,


giao tip, thuc tnh v kim sot ngoi l. Ngoi ra, mt s lp khc cung cp
cc dch v chuyn i kiu d liu, tham s, tnh ton, x l v truy cp t xa.
Trong , Code bao gm hai loi :
Manage Code: bao gm nhng chng trnh c to ra t cc ngn ng lp
trnh c h tr .NET, chng hn, s dng ngn ng lp trnh C# pht trin
chng trnh ng dng A, sau bin dch chng ra tp tin thi hnh (.EXE), tp
tin .EXE ny oc gi l Manage Code trong mi trng .NET.

Unmanage Code : l nhng chng trnh c to ra t cc ngn ng lp trnh


ngoi .NET. V d, s dng ngn ng lp trnh Visual Basic 6.0 khai bo lp
(Class) c tn l B, ri bin dch chng ra tp tin th vin (.DLL), tp tin .DLL
c gi l Unmanage Code khi tham chiu chng trong mi trng .NET
Nh vy, .NET Framework cn gi l mi trng tng tc vi h iu hnh cho
cc ng dng v c minh ho nh hnh sau :
Hnh 1.1: M t cc thnh phn trong .NET Framework
8.2. Nhng c im chnh ca .NET Framework

.NET Framework bao gm cc c im chnh nh : CRL, FCL, Cmmn Type


System (kiu d liu thng dng, Metadata and Selff Descring Component phn chnh
Siu d liu v t c t thnh phn). Cross-Language Interopenrability (trao i v s
dng), Assemblies (n v phn phi), Application Domains (min ng dng) v
Runtime Host (trung tm thi hnh)
CLR : CLR l mi trng thi hnh, ni cung cp dch v thc thi,
qun l b nh, tiu trnh cho cc ng dng h tr bi .NET
o Qun l qu trnh thc thi: qun l qu trnh thc thi ca trnh,
CLR thc hin qua cc bc sau: chn chng trnh bin dch
tng ng vi ngn ng lp trnh, bin dch ng dng sang tp tin
MSIL (trnh by chi tit trong phn bin dch v thc thi ng dng),
bin dch t m nh dng MSIL sang m my bng trnh JIT (
Just-In-Time) ri sau CLR cung cp c s h tng thi hnh
chng trnh.
o Qun l b nh: t qun l b nh l mt trong nhng dch v m
CLR cung cp trong qu trnh thc thi chng trnh. Trnh thu gom
( Garbage Collector) qun l b nh cp cho mt tin trnh ri
sau t ng thu li khi chng trnh kt thc ( chng ta s tm
hiu chi tit v Garbage Collector trong cun sch lp trnh hng
i tng sp pht hnh).
FCL: Bao gm cc th vin lp c s cho php bn s dng thc hin
mi tc v lin quan n giao din, Internet, c s d liu, h iu
hnh,
Common Type System (CTS): CTS a ra cc quy tc cho php bn
khai bo, s dng v qun l kiu d liu trong qu trnh thi hnh.
Ngoi ra, CTS cn cung cp cc tiu chun cho php pht hnh
tng tc gia cc ngn ng lp trnh vi nhau. Tm li, CTS thc
hin cc chc nng chnh sau:
o Thit lp khung cho php tng tc gia cc ngn ng, m an
ton(safe code), ti u ha x l.
o Cung cp m hnh hng i tng nhm h tr qu trnh ci t
a ngn ng trong ng dng.
o nh ngha cc quy tc m ngn ng lp trnh phi tun theo v h
tr tnh chuyn i v bo m i tng c to ra t ngn
ng ny c th tng tc vi ngn ng khc.
Metadata and Self-Descrinbing Components (MSDC): trong nhng
phin bn trc y, ng dng c to ra bi mt ngn ng lp trnh
no c bin dch ra tp tin .EXE hay .DLL v kh khn khi s dng
chng vi mt ng dng c vit trong mt ngn ng lp trnh khc. V
d COM l mt in hnh. Tuy nhin, .NET framework cung cp gii
php chuyn i cho php khai bo thng tin cho mi module v
Assembly ( c th l .EXE hay .DLL). Nhng thng tin ny c gi l
siu d liu v s m t.
Cross Language Interoperability (CLI): CLR l h tr tin trnh trao
i v s dng gia cc ngn ng vi nhau.Tuy nhin, h tr ny khng
bo m m do bn vit c th dng c bi lp trnh vin s dng ngn
ng lp trnh khc.
Assemblies: l tp hp cc kiu d liu v ti nguyn c ng gi dng
tng n v chc nng. Ngoi ra, assemblies chnh l cc n v ch yu
dng trin khai, iu khin phin bn, thnh phn s dng li, chng
hn nh cc tp tin .EXE hay .DLL.
Applicatin Domains: min ng dng cho CLR qun l nhm cch ly
nhiu ng dng ang thi hnh trn cng mt my tnh c th:
o Mi ng dng s c np vo tin trnh(Process) tch bit m
khng nh hng n ng dng khc. Vi k thut kiu m an
ton Application Domains bo m on m ang chy trong min
ng dng c lp vi tin trnh ca ng dng khc trn cng mt
my.
o Khi tm dng tng thnh phn th s khng dng ton b tin trnh.
i vi trng hp ny Application Domains cho php bn loi b
on m ang chy trong ng dng n.
o Application Domains cho php bn cu hnh, nh v, cp quyn
hay hn ch quyn s dng ti nguyn ang thi hnh.
o Ngoi ra, s cch ly ny cho php CLR ngn cm truy cptruwcj
tip gia cc i tng ca nhng ng dng khc nhau.
Runtime Hosts: l trung tm thi hnh cho php np ng dng vo tin
trnh, CLR h tr cho php nhiu loi ng dng khc nhau cng chy
trong mt tin trnh.
o Mi loi ng dng th cn on m khi ng c gi l
Runtime hosts.
o Runtime Hosts np knh thi hnh vo tin trnh v to ra
Application Domains ri thi hnh ng dng vo trong min ng
dng .
9. Visual Studio .NET
Mc tiu: Trnh by cng dng, phn loi v k tn cc ng dng lp trnh ca
b ngn ng Visual Studio .NET. Vn dng tt mi trng ngn ng lp trnh C#
(IDE) thc hin cc bi tp theo yu cu.
Microsoft Visual Studio l tp cng c hon chnh dng xy dng ng dng
Web (ASP.NET Web Applications), dch v XML, ng dng bn (Desktop
application), ng dng mn hnh vi bn phm (Console Applications) v ng dng
trn in thoi di ng (Mobile Applications).
Cc ngn ng lp trnh dng Microsoft Visual studio pht trin ng dng l
Visual basic, Visual C++, Visual C# v Visual J#. C 4 ngn ng lp trnh chnh trn
u s dng chung mt IDE (Integrated Development Environment), ni cho php
chng ta chia s cc tin ch v cng c nhm to nn gii php tch hp.
Nu lm vic vi phin bn Visual Studio 6.0, mi ngn ng lp trnh (C++,
Visual Basic, J++, Fox Pro) s c ring mt IDE tng ng. Ngoi ra, pht trin
ng dng ASP, ta phi s dng Visual Studio InterDev.
9.1. Phin bn Visual Studio .NET 2008

Visual Studio .NET 2008 c 5 phin bn chnh thc l: Express Products


(Visual Studio Express Edition), Visual Studio Standard Edition, Visual Studio
Professional Edition, Visual Studio Tools for Office v Visual Studio Team System.

9.1.1 Visual Studio Express Edition


y l phin bn n gin, d hc, d s dng dng cho nhng ngi t hc,
cha c kinh nghim lp trnh hoc cc bn sinh vin bc u lm quen vi Visual
Studio .NET 2008.
Nu s dng phin bn ny, bn cn b nh khong 35MB n &70MB, min
ph 1 nm. Hn th na, s c phin bn Microsoft SQL Server Express min ph hon
ton, cung cp cc chc nng chnh dng lm vic vi c s d liu Microsoft SQL
Server Express 2008 t ca s Visual Studio .NET 2008.
Tng t nh vy Visual Studio Express Edition cung cp 4 phin bn Visual
Basic 2008 Express Edition, Visual C# 2008 Express Edition, Visual C++ 2008
Express Edition v Visual J# 2008 Express Edition ng vi 4 ngn ng chnh l:
Visual Basic, C#, C++ v J#.
Trong trng hp pht trin ng dng Web, c th s dng Visual Web
Developer 2008 Express nhanh chng to ra cc trang ASP .NET bng cc cng c
trc quan.
9.1.2 Visual Studio Standard Edition
Trong khi phin bn Visual Studio Express c tnh nng n gin, d s dng
v min ph 1 nm th phin bn Visual Studio Standard Edition c thit k ton
din hn vi chi ph va phi.
c s dng cho cc lp trnh vin chuyn nghip lm vic n l vi cc ng
dng chy nhanh, ti u, ng dng a tng trn nn Windows, cc ng dng Web hay
ng dng chy trn thit b cm tay.
Vi nhng c im nh vy, phin bn ny l cng c h tr c bn ngn ng
lp trnh, thng dng cho cc nh lp trnh vin lm vic ngoi gi hay cng vic
khng thng xuyn.
Tng t nh cc phin bn khc ca b Visual Studio .NET 2008, Visual
Studio Standard Edition cung cp giao din trc quan cho php bn thit lp giao din
cho cc loi ng dng bng vic ko v th (drag and drop), xy dng v trin khai
ng dng theo m hnh khch-ch (client-server), cc cng c thit k c s d
liu.
9.1.3 Visual Studio Professional Edition
Nu nh Visual Studio Standard Edition dng cho c nhn pht trin ng dng
th Visual Studio Professional Edition bao gm cc cng c giao din trc quan cho
php bn thit lp giao din cho cc loi ng dng bng vic ko v th (drag and
drop).
Visual Studio Professional Edition c th s dng cho c nhn hay nhm lp
trnh nh khi xy dng v trin khai ng dng theo m hnh khch ch (client-server),
thit k c s d liu, ng dng a tng trn nn Windows, ng dng Web hay ng
dng chy trn thit b cm tay.
9.1.4 Visual Studio Team System
y l cng c theo hng m rng v tch hp, dng cho cc cng ty pht
trin phn mm hay nhng nhm lp trnh vin lm vic xuyn quc gia.
S dng phin bn Visual Studio Team System cho php nhm lp trnh c th
gim phc tp, tng tnh giao tip v hp tc trong qu trnh pht trin phn mm.
Visual Studio Team System cn l b khung (Microsoft Solutions Framework)
gi l MSF. MSF cung cp mt tp c ti u ha v tnh uyn chuyn cng cc quy
tc c tch hp p dng cho tng giai on khi pht trin v trin khai mt phn
mm.
Ty vo tng cng on ca qu trnh xy dng v trin khai phn mm, c th
s dng 5 b cng c thuc Visual Studio Team System nh sau: Visual Studio 2008
Team Suite,Visual Studio 2008 Team Edition for Software Architects, Visual Studio
2008 Team Edition for Software Developers, Visual Studio 2008 Team Edition for
Software Testers, Visual Studio 2008 Team Foundation Server v Visual Studio 2008
Team Test Load Agent.
B Visual Studio 2008 Team Suite
Visual Studio 2008 Team Suite l b cng c tch hp, hiu sut cao cho php
nhm lp trnh vin giao tip v kt hp tt trong qu trnh pht trin phn mm. Vi
t chc ca Visual Studio 2008 Team Suite,bn c th d on trc c cht lng
v t chc trong qu trnh pht trin ng dng.
B Visual Studio 2008 Team Edition for Software Architects:
Team Edition for Software Architects cung cp cc cng c trc quan dng
xy dng mt gii php dng cho vic thit k ng dng hay trin khai chng nhanh
v hiu qu hn.
B Visual Studio 2008 Team Edition for Software Developers:
Team Edition for Software Developers cung cp b cng c pht trin ng dng
cho php nhm lp trnh tng tc, phi hp v cng chia s trong chu trnh pht trin
ng dng.
B Visual Studio 2008 Team Edition for Software Testers:
Team Edition for Software Testers gii thiu tp cc cng c dng kim tra,
nh gi sn phm phn mm c tch hp vi mi trng Visual Studio. B cng c
ny cho php nhng ngi kim tra cht lng sn phm phn mm thng bo n tc
gi hay nh qun l nhng cng vic lin quan.
B Visual Studio 2008 Team Foundation Server:
Team Foundation Server l nhng g mnh nht ca qu trnh hp tc trong
Visual Studio Team System .Khi kt hp vi Visual Studio Team System, Team
Foundation Server cho php bn qun l v theo di qu trnh thc hin ca d n.
B Visual Studio 2008 Team Test Load Agent:
Team Test Load Agent to ra tin trnh kim tra b sung c s dng vi
Visual Studio 2008 Team Edition for Software Testers, cho php bn t chc v m
phng mt hay nhiu ngi s dng kim tra cht lng s dng ca ng dng.
9.2 Lm vic vi Visual Studio .NET 2008

T khi Visual studio .NET ra i, n l mt IDE dng chung duy nht cho mi
ngn ng lp trnh v cc loi ng dng c c tch hp. Nh vy, ng dng Web
Forms (ASP.NET) c xem nh mt phn ca ngn ng lp trnh, bn c th s dng
chung IDE vi ng dng Windows Forms.
Chng hn, bn c th m d n (Project) bng ngn ng lp trnh Visual
Basic.NET, ri m tip mt Project bng ngn ng lp trnh C# trong cng mt
Solution.
Ngoi ra, Visual Studio.NET 2008 c s thay i ln so vi Visual Studio.NET
2003 l mi trng lp trnh, nh dng m, c ch g li, xy dng, kim tra v trin
khai ng dng, t ng ha v tr gip ngi s dng. V d, trang bt u ca Visual
Studio.NET 2008 IDE nh hnh 1-2
Hnh 1.2 : Trang bt u ca Visual Studio.NET 2008
Sau khi ci t thnh cng Visual Studio.NET 2008, ln u tin s dng
Visual Studio.NET 2008 IDE, mt ca s xut hin yu cu chn ngn ng lp trnh
mc nh. Chng hn, trong trng hp ny chng ta chn ngn ng lp trnh C# bng
cch di chuyn n Visual C# Development Setting v nhn mnh Start Visual Studio.
Lu , chng ta s tm hiu chi tit v nhng cng c, ca s, cch cu hnh
IDE lm vic vi ngn ng lp trnh C# trong nhng bi k tip.
Sau khi chn ngn ng lp trnh C# l ngn ng mc nh, mi khi to mi
Project hay Solution, ngn ng ny nm u tin trong ngn Project types nh hnh 1-
3, 3 ngn ng lp trnh cn li l Visual basic, C++ v J# s xut hin bn di phn
Other Language.

Hnh 1.3 : Mn hnh yu cu chn ngn ng ci t


Ngn bn phi l danh sch cc loi ng dng Windows ,bao gm cc loi nh:
Windows Application, Console Application, Class Library, Windows Service, Crystal
Reports Application,
Trong trng hp mun xy dng ng dng ASP.NET, bn c th chn vo
trong phn to mi, khi ca s s xut hin nh hnh 1-5
Tng t nh trng hp ng dng vWindows, ng dng vWebsite bao gm
cc loi nh: ASP.NET vWebsite, ASP.NET vWeb Service, Srystal Reports vWebsite.
Trn thc n (menu) ca Visual studio .NET 2008, menu c tn l Community
bao gm cc menu con nh: Ask a question, Check Question Status, Send Feedback
nhm h tr cho bn tm kim, gi v kim tra cu hi hay gp kin v cng ty
Microsoft.
Ngoi ra, trn menu ny cn c cc menu con khc, chng cho php bn tr n
a ch internet cha ti nguyn hay nhng thng tin cp nht v Visual studio .NET
2008 nhm h tr ti a cho cng ng lp trnh .NET.
Chng hn, bn chn vo menu c tn Developer center, ca s trnh duyt xut
hin.
9.3. Cc loi ng dng dng C#

Microsoft Visual C# 2008 (C sharp) l ngn ng lp trnh thit k dng pht


trin ng dng chy trn .NET Framework. C# cn l ngn ng lp trnh n gin,
mnh, kiu an ton (type-safe) v hng i tng (object-oriented).
Vi nhiu c im mi,C# cho php bn xy dng ng dng nhanh chng
nhng vn gi li c s din cm v tao nh ca ngn ng lp trnh truyn thng C.
Mc d mi ngn ng lp trnh trong b .NET u s dng chung .NET
Framework, nhng mi ngn ng vn c tnh c th ring ca n. S dng C# l mt
la chn ti u khi bn xy dng loi ng dng nh: qun l, thng mi in t, ng
dng tch hp h thng,th vin,ng dng dng cho my PDA hay in thoi di
ng,
9.3.1. ng dng Windows Form
Khi xy dng ng dng vi giao din ngi dng chy trn my bn c ci
t .NET Framework, bn chn vWindows trong phn Project Types ri tip tc chn
vo vWindows Application trong phn Templates
9.3.2. ng dng mn hnh v bn phm
Nu ng dng vi giao din ngi dng l bn phm v mn hnh chy trn
my bn, bn c th chn loi ng dng l Console Application trong phn
Templates .Vi ng dng loi ny, ngi s dng thao tc bng mn hnh Console.
Tuy nhin, bng cch s dng cc khng gian tn ca ng dng vWindows
Forms, bn cng c th to ra ng dng giao din ha bng ng dng Console
Application.
9.3.3. Dch v h iu hnh
Trong trng hp ng dng chy thng tr trong b nh,bn c th chn loi
ng dng l vWindows Service trong phn Templates.
Khi chn ng dng ny, bn to ra tp tin .EXE v ci t chng vodch v
ca h iu hnh (Service), bn c th Start, Stop hay Pause v Continue nh nhng
dch v ca h iu hnh ang tn ti.Ch , ng dng dch v h iu hnh th khng
cn giao din, thay vo bn s dng tin ch Service ca h iu hnh.
9.3.4. Th vin
Khi cn xy dng th vin dng chung hay COM+(trin khai tng Business
Logic), bn chn vo Class Library, sau khi kt thc khai bo,nu bin dch thnh
cng th ng dng ny s to ra tp tin .DLL.
V d, bn mun xy dng th vin bao gm cc lp lm vic vi c s d liu
SQL Server, sau bn s dng th vin nh nhng Project khc nhau, ng vi mc
ch ny bn to mi Project loi Class Library.
9.3.5. iu khin do ngi s dng nh ngha
Ngoi cc iu khin (Control)t cc lp ca .NET cung cp, ngi s dng c
th kt hp nhng iu khin ny thnh mt iu khin ty (CustomControl) phc
v cho mt yu cu c th no .
i vi ng dng vWindows Forms, bn c th s dng loi Project l
vWindows Control Library. Trong trng hp lm vic vi ng dng ASP.NET loi
Project bn dng l vWeb Control Library.
C hai loi Project ny u bin dch thnh tp tin .DLL, bn c th thm chng
vo cng c (Tool Box) nh nhng iu khin ca .NET
9.3.6. ng dng bo co
Nu c nhu cu xy dng ng dng bo co (Report) bng Crystal Report, bn
chn loi Project l Crystal Report Applications.Tuy nhin, thng thng Report l
mt phn ca ng dng nn bn s dng Crystal Report nh nhng i tng ca
Project.
9.3.7. ng dng SQL Server
khai bo bng d liu (Table), bng o (View), th tc ni ti, (Store
Procedure), hm (Funtion),bn vo ngn Database ri chn Project vi loi SQL
Server Project. ng dng ny cho php bn thit k c s d liu SQL Server t
Visual Studio.NET 2008 thay v t trnh SQL Server Enterprise.
Lu , tng t nh trong ng dng Report, bn c th thm c s d liu vo
Project nh mt phn ca ng dng thay v to ringProject v c s d liu.
9.3.8. ng dng PDA v Mobile
Nu bn mun xy dng ng dng .NET cho thit b cm tay nh in thoi di
ng (Mobile) hay my k thut s h thng c nhn (PDA) th chn vo Smart
Device.
9.3.9. ng dng ng gi v trin khai
Sau khi kt thc cng on xy dng ng dng, bn c th ng goi ng dng
v trin khai trn my khc. ng gi ng dng, bn vo ngn Other Project
Types ri chn loi Project l Setup and Deployment.
9.3.10. To mt Solution
Solution c xem nh mt (Container) dng qun l nhiu Project trn
Visual Studio.NET 2008.Khi to Project u tin cha tn ti Solution, lp tc
Solution c to ta mc nh. Trong trng hp Solution tn ti th chn Solution
thm Project vo Solution .
Ngoi ra, bn c th to mi Solution trc khi thm cc Project khc bng
cch vo Other Project Types ri chn Visual Studio Solutions.
9.4. Cu trc chng trnh C#

9.4.1. Cu trc chng trnh


- Cu trc chng trnh theo Windows Application Form
//Vng bt u khai bo s dng khng gian tn
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
//Vng bt u khai bo s dng khng gian tn
//Khai bo khng gian tn ca ng dng
namespace TH2
{
//Vng bt u khai bo tn cc Class
static class Program
{
//Vng bt u khai bo tn cc phng thc trong lp
static void Main()
{
//Vng khai bo lnh
}
}
}
- Cu trc chng trnh theo Console Command
using System
Namespace MyNameSpace
{
class HelloWorld
{
//im bt u ca ng dng theo kiu C
static void Main(){
Main(System.Environment.GetCommandLineArgs());
}
static void Main(string[] args){
System.Console.WriteLine("Hello World")
}
}
}
- Cu trc ca 1 chng trnh C#

Program

File1.cs File2.cs File3.cs

Namespace A {..} Namespace A {..} Namespace A

Class X{..} Class Y{..} Class Z{..} Class I{..} Class


9.4.2 T chc cy Project
9.4.2.1 Nt Properties
9.4.2.2 Nt References
9.4.2.3 Nt i tng c giao tip
9.4.2.4 Nt i tng khng c giao tip

9.5. Cu trc th mc ca ng dng

- Cc File ca 1 chng trnh C#

BI THC HNH CA HC VIN


K nng 1 : Trnh by cc u im v nhc im ca ngn ng lp
trnh C#.
Lm vic theo nhm, tra cu trn Internet, cc phng tin khc v trnh
by bo co (ti a khong 2 trang).
K nng 2 : Ci t Visual Studio 2008.
Ci t Visual Studio 2008 t a DVD
K nng 3 : Tm cc thng tin lin quan v C# : tnh nng ca phn
mm, cc phin bn
Lm vic theo nhm.
Tm hiu cc thng tin v C# v s lng ngi dng C# hin nay.
Cc tnh nng vt tri ca C# so vi cc ngn ng khc.
Cc phin bn C# hin nay c Microsoft cng b.
K tn mt s ng dng dng ngn ng lp trnh C# m cc bn bit.
K nng 4 : Tm hiu v cc chng trnh C# mu
Lit k v phn bit c cc thnh phn trong th mc ca ng dng.
Cch t chc ca Cy Project, khm ph v tm hiu cc nt.

CU HI N TP
Cu 1: Nu cc thnh phn chnh ca .NET Framework.
Cu 2: Trnh by s mi trng .NET Framework.
Cu 3: Lit k nhng c im chnh ca .NET Framework.
Cu 4: Lit k cc ng dng dng C#.
Cu 5: Trnh by cu trc chng trnh C#.

HNG DN TR LI:
Sinh vin nghin cu ti liu hc tp v cc thng tin lin quan tr li
cc cu hi trn, trnh by ngn gn v thc hin trn giy gi li gio vin
nh gi kt qu kim tra kin thc ca hc vin.
BI 2 : VN I/O TRONG .NET
M bi M35.1
Gii thiu : y l bi t nn tng cho hu nh tt c cc v d mng
cha trong cun sch ny. Nu khng c mt kin thc lm vic .NET v x
l I/O c th rt kh khn thch ng vi cc v d m trong cun sch ny vi
nhu cu lp trnh mng. Gip cho Sinh vin vn dng cc lp trong mi trng
.NET lp trnh mng c bit l cc lp trong System.IO.Streams ghi v
c cc d liu ln cc vng lu tr, trong h thng mng.
Mc tiu ca bi:
- Trnh by c khng gian tn I/O p dng cho cc mng truyn d liu.
- Lit k cc thnh phn ca khng tn System.IO.Streams c s dng
lin quan n mng.
- M t c i tng Streams.
- S dng khng tn System.IO ghi v c cc d liu ln cc vng lu
tr.
- S dng khng tn System.IO chuyn ti d liu, truy vn d liu
trn mng.
- Thc hin cc thao tc an ton vi my tnh.
1. Gii thiu v khng gian tn IO
Mc tiu: Nu cng dng ca lp IO trong qu trnh khi thc hin chuyn
ti d liu, truy vn d liu ln cc vng lu tr, trn h thng mng.
I/O p dng mng d liu chuyn giao, cng nh tit kim v ti a cng
ca bn my tnh ca Sau chng s m t lm th no thc hin chuyn
mng; tuy nhin, chng ny s c quan tm vi cc c bn I/O hot ng c
ph bin n c hai loi chuyn. Na u ca chng ny s chng minh lm th
no c v ghi vo a cng, bng cch s dng dng NET. Phn th hai ca
chng ny pht trin khi nim dng bng cch chng minh lm th no chuyn
i i tng phc tp, chng hn nh cc truy vn c s d liu vo mt nh dng
m c th c ghi vo mt dng NET.
2. Streams
Mc tiu: Vn dng lp Stream trong IO ca mi trng .NET xy
dng cc ng dng thc hin chuyn ti d liu, truy vn trong vng lu tr, h
thng mng.
2.1. M ha d liu

Streams (Lung d liu) l s tru tng ha phng thc truyn d


liu (c, ghi) , i vi mi loi thit b khc nhau v trn cc mi trng khc
nhau th s dng cc loi stream khc nhau c ghi d liu.
C hai loi Stream quan trng: NetworkStream v FileStream
Network Stream: c s dng c d liu trn mng
FileStream: c dng c d liu cc b (v d nh tp tin trn a)
C hai cch s dng Stream l dng stream ng b v dng stream bt
ng b. Trong cch dng ng b th cc lun (thread) tng ng ca chng
trnh s tm ngng n khi ng dng hon thnh vic c d liu hoc c li xy ra.
Trong cch dng khng ng b th, cc thread s vn chy song song vi qu trnh
truyn d liu, v khi qu trnh truyn d liu hon tt hay c li xy ra th u c
trng thi tng ng c tr v.
V d s dng Stream c tp tin:

Khi to mt n .NET mi v thm vo:

- Mt Form t tn l FormIO
- Mt File Open Dialog Control vi tn l openFileDialog
- Mt TextBox vi tn l tbResults, chn thuc tnh Multiline = true
- Hai Button vi tn gi l btnReadAsync v btnReadSync (btnReadAsync
s thc hin chc nng c tp tin theo c ch khng ng b, btnReadSync
s thc hin chc nng c tp tin theo c ch ng b)

Khai bo thm Namespace cha cc lp Stream

Khai bo cc bin s dng trong chng trnh:

Khai bo phng thc cp nht cho TextBox


Vit code x l cho s kin click ca Button readAsync

Vit code x l cho phng thc fs_StateChanged

Kt qu :
Vit code x l cho nt lnh readSync c tp tin theo c ch ng b:

V c d liu ng b nn n s lm dng ton b hot ng ca biu mu trong


khi c, v vy khc phc tnh trng ny, c th s dng Thread ring c. Khi
s dng Thread th phi khai bo thm namespace Threading :

Phn code cho s kin click ca btnReadSync

Phn code cho phng thc syncRead


2.2 S dng StreamReader c tp tin Text

Tp tin c chia ra lm 2 loi, tp tin vn bn (TEXT) v tp tin nh phn


(Binary). c tp tin vn bn ta s dng lp StreamReader:

V d:

Thm mt Button vo FormIO t tn l btnRead

Vit code cho s kin click ca btnRead:


Kt qu:

V d v ghi tp tin s dng BinaryWriter ghi tp tin nh phn :

Thm mt Button v t tn l btnWrite :

Vit code s l s kin Click ca btnWrite


Serialization

Quy trnh Serialization l quy trnh ng gi cc i tng thnh dng m


Stream trong .NET c th hiu c, n gip cho vic truyn ti d liu s dng
Stream c dng hn, nh vic truyn i tng qua mng hoc ghi xung a.
Quy trnh Deserialization l quy trnh ngc li, chuyn d liu thnh i tng.

s dng Serialization cn tham chiu n namespace:

V Add References cho n :


V d:

To mi mt biu mu v t tn l FormSerialization, thm mi mt Class


v t tn l PurchaseOrder

To mi cu trc d liu mu s dng Demo qu trnh Serialization:

public enum PurchaseOrderStates


{
ISSUED,
DELIVERED,
INVOICED,
PAID
}

[Serializable()]
public class Company
{
public string name;
public string address;
public string phone;
}

[Serializable()]
public class LineItem // Mt hng
{
public string description; // M t
public int quantity; // S lng
public double cost; // Gi
}

[Serializable()]
public class PurchaseOrder // t hng
{
private PurchaseOrderStates _purchaseOrderStatus;
private DateTime _issuanceDate;
private DateTime _deliveryDate;
private DateTime _invoiceDate;
private DateTime _paymentDate;
public Company buyer;
public Company vendor;
public string reference;
public LineItem[] items;

public PurchaseOrder()
{
_purchaseOrderStatus = PurchaseOrderStates.ISSUED;
_issuanceDate = DateTime.Now;
}

public void recordDelivery()


{
if (_purchaseOrderStatus == PurchaseOrderStates.ISSUED)
{
_purchaseOrderStatus = PurchaseOrderStates.DELIVERED;
_deliveryDate = DateTime.Now;
}
}
}

Trong biu mu FormSerialization thm mt Button v t tn l btnSoap,


thm tham chiu n namespace.

using System.Runtime.Serialization.Formatters.Soap;

Vit code cho Button ny nh sau:


i vi cc dng Serialization khc ch cn thay i tng Formater tng
ng, hoc i vi Xml th c th s dng XmlSerializer thc hin thao tc
Serialize v Deserialize, nhng ch l XmlSerialize yu cu phi bit kiu d liu
ca i tng trc khi Serialize hoc Deserialize, nn phi dng phng thc
GetType() ca i tng ly kiu d liu trong lc khi to i tng
XmlSerialize.

BI THC HNH CA HC VIN


Vit chng trnh c v ghi cc loi File
Bc 1 : Thit k giao din

Bc 2 : Vit m cho cc nt lnh


private void btnSoap_Click(object sender, EventArgs e)
{
Company vendor = new Company();
Company buyer = new Company();
LineItem goods = new LineItem();
PurchaseOrder po = new PurchaseOrder();

vendor.name = "Acme Inc.";


buyer.name = "Wiley E. Coyote";
goods.description = "anti-RoadRunner cannon";
goods.quantity = 1;
goods.cost = 599.99;
po.items = new LineItem[1];
po.items[0] = goods;
po.buyer = buyer;
po.vendor = vendor;
// S dng Soap Formatter
SoapFormatter sf = new SoapFormatter();
FileStream fs = File.Create("..\\po.xml");
sf.Serialize(fs, po);
fs.Close();
}

private void btnDeSoap_Click(object sender, EventArgs e)


{
SoapFormatter sf = new SoapFormatter();
FileStream fs = File.OpenRead("..\\po.xml");
PurchaseOrder po = (PurchaseOrder)sf.Deserialize(fs);
fs.Close();
MessageBox.Show("Customer is " + po.buyer.name +
"\nVendor is " + po.vendor.name + ", phone is " +
po.vendor.phone +
"\nItem is " + po.items[0].description +
" has quantity " +
po.items[0].quantity.ToString() + ", has cost " +
po.items[0].cost.ToString(), "Soap Deserialization");
}

private void btnBinary_Click(object sender, EventArgs e)


{
Company vendor = new Company();
Company buyer = new Company();
LineItem goods = new LineItem();
PurchaseOrder po = new PurchaseOrder();

vendor.name = "Acme Inc.";


buyer.name = "Wiley E. Coyote";
goods.description = "anti-RoadRunner cannon";
goods.quantity = 1;
goods.cost = 599.99;
po.items = new LineItem[1];
po.items[0] = goods;
po.buyer = buyer;
po.vendor = vendor;

// S dng Binary Formatter


BinaryFormatter bf = new BinaryFormatter();
FileStream fs = File.Create("..\\po.xml");
bf.Serialize(fs, po);
fs.Close();
}

private void btnDeBinary_Click(object sender, EventArgs e)


{
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = File.OpenRead("..\\po.xml");
PurchaseOrder po = (PurchaseOrder)bf.Deserialize(fs);
fs.Close();
MessageBox.Show("Customer is " + po.buyer.name +
"\nVendor is " + po.vendor.name + ", phone is " +
po.vendor.phone +
"\nItem is " + po.items[0].description +
" has quantity " +
po.items[0].quantity.ToString() + ", has cost " +
po.items[0].cost.ToString(), "Binary Deserialization");
}

private void btnXML_Click(object sender, EventArgs e)


{
Company vendor = new Company();
Company buyer = new Company();
LineItem goods = new LineItem();
PurchaseOrder po = new PurchaseOrder();

vendor.name = "Acme Inc.";


buyer.name = "Wiley E. Coyote";
goods.description = "anti-RoadRunner cannon";
goods.quantity = 1;
goods.cost = 599.99;
po.items = new LineItem[1];
po.items[0] = goods;
po.buyer = buyer;
po.vendor = vendor;

// S dng XmlSerializer
XmlSerializer xmlSerializer = new XmlSerializer(po.GetType());
FileStream fs = File.Create("..\\po.xml");
xmlSerializer.Serialize(fs, po);
fs.Close();
}

private void btnDeXML_Click(object sender, EventArgs e)


{
PurchaseOrder po = new PurchaseOrder();
XmlSerializer xmlSerializer = new XmlSerializer(po.GetType());
FileStream fs = File.OpenRead("..\\po.xml");
po = (PurchaseOrder)xmlSerializer.Deserialize(fs);
fs.Close();
MessageBox.Show("Customer is " + po.buyer.name +
"\nVendor is " + po.vendor.name + ", phone is " +
po.vendor.phone +
"\nItem is " + po.items[0].description +
" has quantity " +
po.items[0].quantity.ToString() + ", has cost " +
po.items[0].cost.ToString(), "Xml Deserialization");
}
Bi 2 : X l File ng b v khng ng b
Bc 1 : Thit k giao din

Bc 2: Vit m cho cc nt lnh


FileStream fs;
byte[] fileContents;
AsyncCallback callback;
delegate void InfoMessageDel(String info);

public Form1()
{
InitializeComponent();
}

private void btnReadAsync_Click(object sender, EventArgs e)


{
openFileDialog.ShowDialog();
callback = new AsyncCallback(fs_StateChanged);
fs = new FileStream(openFileDialog.FileName, FileMode.Open,
FileAccess.Read, FileShare.Read, 4096, true);
fileContents = new Byte[fs.Length];
fs.BeginRead(fileContents, 0, (int)fs.Length, callback, null);
}

private void fs_StateChanged(IAsyncResult asyncResult)


{
if (asyncResult.IsCompleted)
{
string s = Encoding.UTF8.GetString(fileContents);
InfoMessage(s);
//tbResults.Text = Encoding.UTF8.GetString(fileContents);

fs.Close();
}
}

public void InfoMessage(String info)


{
if (tbResults.InvokeRequired)
{
InfoMessageDel method = new InfoMessageDel(InfoMessage);
tbResults.Invoke(method, new object[] { info });
return;
}

tbResults.Text = info;
}

private void btnReadSync_Click(object sender, EventArgs e)


{
openFileDialog.ShowDialog();
Thread thdSyncRead = new Thread(new ThreadStart(syncRead));
thdSyncRead.Start();
}

public void syncRead()


{
//OpenFileDialog ofd = new OpenFileDialog();
//ofd.ShowDialog();
//openFileDialog.ShowDialog();
FileStream fs;
try
{
fs = new FileStream(openFileDialog.FileName, FileMode.OpenOrCreate);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
fs.Seek(0, SeekOrigin.Begin);
byte[] fileContents = new byte[fs.Length];
fs.Read(fileContents, 0, (int)fs.Length);
//tbResults.Text = Encoding.UTF8.GetString(fileContents);
string s = Encoding.UTF8.GetString(fileContents);

InfoMessage(s);
fs.Close();
}
CU HI N TP
Cu 1 : Nu khi nim v Stream.
Cu 3 : Nu phng thc truyn ng b v bt ng b ca Stream
Cu 2 : Nu phng thc canRead(); canSeek(); canwrite();
BI TP
Vit chng trnh thao tc vi File ging chng trnh qun l File ca
Norton Command (NC).
Vit chng trnh son tho File ging (Notepad) i vi File dng Text.
HNG DN THC HIN
1. Nghin cu ti liu l thuyt lin quan n bi thc hin cc cu hi
1,2,3
2. Nghin cu giao din v cng dng chng trnh Norton Command.
3. Phn tch cc chc nng ca bi tp
4. Thit k giao din (Form)
5. Vn dng cc phng thc canRead(); canSeek(); canwrite() xy
dng cc ng dng bi tp.
BI 3 : LM VIC VI SOCKETS
M bi: M35-03
Gii thiu: Trnh by m hnh client/server, lit k cc lp Socket. Vit cc ng
dng trn mng dng Socket.
Mc tiu ca bi:
M t m hnh client/server;
M t lp Socket;
Trnh by ch lm vic ca socket Clien v Server;
Vit cc ng dng trn mng dng Socket.
Thc hin cc thao tc an ton vi my tnh.
1. Gii thiu v socket trong lp trnh mng
Mc tiu: trnh by cng dng ca Socket trong lp trnh mng. M t cc cng
ca Socket v cc ch giao tip khi s dng cng trong Socket.
1.1. nh ngha

Socket l mt giao din lp trnh ng dng (API-Application


Programming Interface). N c gii thiu ln u tin trong n bn UNIX -
BSD 4.2. di dng cc hm h thng theo c php ngn ng C (socket(),
bind(), connect(), send(), receive(), read(), write(), close() ,..). Ngy nay,
Socket c h tr trong hu ht cc h iu hnh nh MS Windows, Linux
v c s dng trong nhiu ngn ng lp trnh khc nhau: nh C, C++, Java,
C# . . .
Socket cho php thit lp cc knh giao tip m hai u knh c nh
du bi hai cng (port). Thng qua cc cng ny mt qu trnh c th nhn v
gi d liu vi cc qu trnh khc.

Hnh 3.1. M hnh Socket


C hai kiu socket:
1. Socket kiu AF_UNIX ch cho php giao tip gia cc qu trnh
trong cng mt my tnh
2.Socket kiu AF_INET cho php giao tip gia cc qu trnh trn
nhng my tnh khc nhau trn mng.
1.2. S hiu cng (Port Number) 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.

Hnh 3.2. Cng trong Socket


Trong hnh trn, a ch ca qu trnh B1 c xc nh bng 2 thng
tin: (Host B, Port B1):
a ch my tnh c th l a ch IP dng 203.162.36.149 hay l a
ch theo dng tn min nh www.cit.ctu.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 bits). Trong , cc cng t 1
n 1023 c gi l cng h thng c dnh ring cho cc qu trnh ca h
thng.
Cc cng mc nh ca 1 s dch v mng thng dng:

S hiu cng Qu trnh h thng

7 Dch v Echo
21 Dch v FTP
23 Dch v Telnet
25 Dch v E-mail (SMTP)
80 Dch v Web (HTTP)
110 Dch v E-mail (POP)

1.3. Cc ch giao tip

Xt kin trc ca h thng mng TCP/IP

Hnh 3.3 B giao thc


TCP/IP
Tng vn chuyn gip chuyn tip cc thng ip gia cc chng trnh
ng dng vi nhau. N c th hot ng theo hai ch :

Giao tip c ni kt, nu s dng giao thc TCP


Hoc giao tip khng ni kt, nu s dng giao thc UDP

Socket l giao din gia chng trnh ng dng vi tng vn chuyn.


N cho php ta chn giao thc s dng tng vn chuyn l TCP hay UDP
cho chng trnh ng dng ca mnh.
Bng sau so snh s khc bit gia hai ch giao tip c ni kt v
khng ni kt:

Ch c ni kt (TCP) Ch khng ni kt (UDP)


Tn ti knh giao tip o gia hai Khng tn ti knh giao tip o gia
bn giao tip hai bn giao tip
D liu c gi i theo ch D liu c gi i theo ch
bo m: c kim tra li. truyn li khng bo m: Khng kim tra li,
gi tin li hay mt, bo m khng pht hin khng
th t n ca cc gi tin . . . truyn li gi tin b li hay mt,
D liu chnh xc, Tc truyn khng bo m th t n ca cc
chm. gi tin . . .
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 . . .=

2. To ng dng n gin hello world


Mc tiu: vn dng cc cng, ch lm vic ca Socket lp trnh cc
ng dng giao tip trn h thng mng.
M hnh Client-Server s dng Socket ch khng ni kt (UDP)
2.1. Vit di dng n gin UDP client

Yu cu: Vit chng trnh pha client cho php gi mt thng ip n


my ch bt k.
Hng dn: M Visual Studio .NET, to mt Project mi, chn Visual
C# projects, v sau chn Windows Application. t tn l UDP Client v
nhn OK.
Thit k form cho chng trnh nh hnh sau. t tn cho nt button l
button1 v hp vn bn textbox l tbHost.

Hnh 3.4 Giao din UDP Client

Kch chn nt button v g on lnh sau:


private void button1_Click(object sender, System.EventArgs e)
{
UdpClient udpClient = new UdpClient();
udpClient.Connect(tbHost.Text, 8080);
Byte[] sendBytes = Encoding.ASCII.GetBytes("Hello
World?");
udpClient.Send(sendBytes, sendBytes.Length);
}
Cn b sung cc namespace sau vo trong chng trnh
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.IO;
Nhn F5 thc thi chng trnh, ta c kt qu nh hnh 3.5
2.2. Vit di dng n gin UDP server

Yu cu: Vit chng trnh pha server nhn v hin th thng ip


c gi ti t chng trnh UDP client trn.
Hng dn: To mt C# project vi giao din nh sau

Hnh 3.5 Giao din UDP Server


t tn cho list box l lbConnections.
y, chng ta bt u xy dng hai lung (thread) cho chng trnh.
u tin l lung qun l d liu c gi n, m ngun chng trnh
nh sau:
public void serverThread()
{
UdpClient udpClient = new UdpClient(8080);
while(true)
{
IPEndPoint RemoteIpEndPoint = new
IPEndPoint(IPAddress.Any,0);
Byte[] receiveBytes = udpClient.Receive(ref
RemoteIpEndPoint);
string returnData = Encoding.ASCII.GetString(receiveBytes);
lbConnections.Items.Add(RemoteIpEndPoint.Address.ToString
() + ":" + returnData.ToString()
);
}
}
Vit code cho s kin Form load
private void Form1_Load(object sender, System.EventArgs e){
Thread thdUDPServer = new
Thread(new
ThreadStart(serverThread));
thdUDPServer.Start();
}

Thc thi chng trnh: kim tra kt qu ca chng trnh, ci t


hai chng trnh UDP client v UDP server trn hai my khc nhau c kt
ni mng. Trn chng trnh UDP client nhp vo a ch IP ca server. Sau
khi bm nt gi, kt qu s c hin th trn chng trnh UDP server.
3. Dng giao thc TCP/IP chuyn files
Mc tiu: Trnh by qu trnh kt ni my tnh s dng m hnh Client-
Server, vn dng m hnh kt ni TCP lp trnh cc ng dng
Cc giai on xy dng m hnh Client-Server s dng Socket ch
c ni kt (TCP)
Giai on 1: Server to Socket, gn s hiu cng v lng nghe yu cu
ni kt.

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.

Server sn sng phc v Client.


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 cn rnh 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.

Sau khi chp nhn yu cu ni kt, thng thng server thc hin
lnh read() v nghn cho n khi c thng ip yu cu (Request
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
(ReplyMessage) 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 ca cc thng ip,
qui 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 qui nh ca giao thc.
Bn c th tm c m t chi tit ca cc Protocol c chun ha trong
cc ti liu RFC (Request For Comments). Ngc li, nu chng ta pht
trin mt ng dng Client-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.

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().

Nh vy ton b tin trnh din ra nh sau:


Chng trnh ng dng truyn file qua mng ng dng giao thc TCP/IP
s c trnh by trong phn bi tp.
4. G ri trong lp trnh mng
Mc tiu: S dng cc lnh ph hp vi c php lp trnh Sockets g
ri trong qu trnh ci t cc ng dng mng.
Kt ni mng c th b ngt do c ng dng khc chim dng cng m
chng ta mun s dng. Do phng thc Connect hoc Listen khng phi
bao gi cng c thc hin thnh cng. Do , s dng cu trc bt li
try/catch trong lp trnh mng l cn thit.
V d:
try
{
serverSocket.Bind(ipepServer);
serverSocket.Listen(-1);
}
catch(SocketException e)
{
MessageBox.Show(e.Message);
}
catch(Exception e)
{MessageBox.Show(e.Message); Application.Exit();

Application.Exit()
End try
Vn na hay gp trong cc ng dng mng l kh nng m rng. y
l kh nng p ng ca ng dng vi s lng kt ni ln trong cng mt thi
im. th nghim, chng ta c th kch chut nhiu ln vo nt Connect hoc
Send trn ng dng client xem chng trnh c th b ng do ht b nh,
ngt gia chng, rt kt ni hay vn hot ng tt. pht hin ra li ca nhng
ng dng mng a lung, chng ta s dng lp System. Diagnostics.Trace, hoc
l cu lnh Console.WriteLine phng thc vo hoc thot ca chng trnh.
i vi cc ng dng mng c giao tip vi mt ng dng c phn
phi bi hng th 3, vic kim tra li gia client v server tr nn kh khn hn,
c bit khi m giao thc v cng kt ni khng c tit l hoc c m t
y . Trong trng hp ny, vic trc tin chng ta cn phi lm l kim tra
xem nhng cng no ang hot ng. Cng c hu ch lm vic ny l
netstat. m netstat, chng ta g netstat vo trong du nhc lnh hoc vo run.
Xem hnh sau
Netstat lit k tt c cc kt ni vo/ra trn my tnh ti thi im hin ti
cng vi s cng tng ng. Dng phng php i chiu khi chy v tc
chng trnh tm ra cng m chng trnh s dng. Vic xc nh cng ca
ng dng l bc u tin can thip vo trong giao thc, phn tch tng bit
v byte c gi qua li gia hai ng dng chng ta cn s dng cc cng c
phn tch khc v d Trace Plus ( www.sstinc.com).
5. Mc Socket trong .NET
Mc tiu: Vn dng lp socket lp trnh mng
Lp quan trng nht trong lp trnh mng vi .NET l lp socket. Lp
socket c th c s dng cho giao thc TCP/IP hoc UDP cho c client v
server.
Khng gian tn ca lp Sockets: System.Net.Sockets
Khai bo lp socket:
public class Socket : IDisposable
V d sau y minh ha ng dng server s dng lp socket.ng dng
server cho php lng nghe cc kt ni gi n server qua cng 8080.
on m chng trnh
private void btnListen_Click(object sender, System.EventArgs e)
{
int bytesReceived = 0; byte[] recv = new
byte[1]; Socket clientSocket;
Socket listenerSocket = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp
);
IPHostEntry IPHost = Dns.GetHostByName(Dns.GetHostName());
IPEndPoint ipepServer = new
IPEndPoint(IPHost.AddressList[0],8080);
listenerSocket.Bind(ipepServer);
listenerSocket.Listen(-1);
clientSocket = listenerSocket.Accept();
if (clientSocket.Connected)
{
do
{
bytesReceived = clientSocket.Receive(recv);
tbStatus.Text += Encoding.ASCII.GetString(recv);
}

while (bytesReceived!=0);
}
}
BI THC HNH CA HC VIN
Bi 1 : Vit chng trnh cho php gi file qua mng s dng giao thc
TCP/IP.
- Thi gian: 04 gi

HNG DN THC HIN BI TP NG DNG

1. Vit ng dng gi file trn my client: TCP Simple Client


1.1 Thit k giao din nh sau

1.2 Vit code cho cc s kin sau


Khi ngi dng kch button Browse ch n ng dn file cn gi
Khi ngi dng kch vo button Send, gi file:
+ Np file cn gi vo b m
+ To mt kt ni TCP/IP v gi file
2. Vit ng dng gi file trn my client: TCP Simple Client
2.1 Thit k giao din nh sau
2.2 Vit code
Lng nghe kt ni t client
Lu file c gi ln server ti a ch c:\\my documents\
\upload.txt
- Thi gian thc hin bi tp vt qu 5% thi gian cho php s khng
c nh gi.
- Th sinh phi tuyt i tun th cc qui nh an ton lao ng, cc qui
nh ca xng thc tp, nu vi phm s b nh ch thi.
Bi 2 : Vit chng Chat gia 2 my tnh dng UDP v TCP
Cch 1 : Dng UDP
Bc 1 : Thit k giao din cho Client

Bc 2 : Vit m
//Cho nt kt ni
private void btnKetNoi_Click(object sender, EventArgs e)
{
_localPort = this.txtLocalPort.Text;
_remotePort = this.txtPort.Text;
_applications = new UdpClient(int.Parse(_localPort));
_thread = new Thread(Explore);
_thread.Start();
this.btnGoi.Click += btnGoiClick;
this.btnGoi.Enabled = true;
this.btnKetNoi.Enabled = false;
txtIP.ReadOnly = txtLocalPort.ReadOnly =txtPort.ReadOnly = true;
}
//Cho nt gi d liu i
public partial class Form1 : Form
{
string _localPort = "10";
string _remotePort = "1000";
UdpClient _applications = new UdpClient();
Thread _thread;
bool _exit = false;
delegate void ClearCacheReceivedData(string Data, string RemoteHost);
public Form1()
{
InitializeComponent();
}

//Khi n Enter vo trong o Chat


private void txtChat_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyValue==13)
{
lstSent.Items.Add(txtChat.Text);
}
}

//Th tc gi tin nhn


private void btnGoiClick(object sender, EventArgs e)
{
IPAddress ip;
//Kim tra xem IP nhp Chat c ph hp hay khng
if (!IPAddress.TryParse(txtIP.Text, out ip))
MessageBox.Show("Hy nhp chnh xc IP nhn",
"Thng bo", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
{
//Gi d liu n my Chat
SentData();
//Ghi d liu va Chat vo mc tin nhn gi
lstSent.Items.Insert(0, txtChat.Text);
txtChat.Clear();
}
}
private void SentData()
{
//i chui cn gi qua mng Byte
byte[] msg;
msg = System.Text.Encoding.UTF8.GetBytes(txtChat.Text);
//S dng phng thc Send ca UDP gi d liu
_applications.Send(msg, msg.Length, txtIP.Text,int.Parse(_remotePort));

}
private void ReceivedData(string Data, string RemoteHost)
{
if (lstReceived.InvokeRequired)
{
ClearCacheReceivedData clearCacheReceivedData = new
ClearCacheReceivedData(ReceivedData);
lstReceived.Invoke(clearCacheReceivedData, new object[] {Data, RemoteHost
});
return;
}
string msg = "";
msg = "(Ng_i gi: " + RemoteHost + ")" + Data;
lstReceived.Items.Insert(0, msg);
}

private void Explore()


{
IPAddress ip;
byte[] msg;
string str = "";
//ly danh sch IP ca ng dng Card u tin
ip = Dns.GetHostEntry(_remotePort).AddressList[0];

IPEndPoint ep = new IPEndPoint(ip, Convert.ToInt16(_remotePort));


while (_exit == false)
{
Application.DoEvents();
//nu UDP ang hot ng
if (_applications.Available > 0)
{
msg = _applications.Receive(ref ep);
str = System.Text.Encoding.UTF8.GetString(msg);
ReceivedData(str, ep.Address.ToString());
}
}
}
Cch 2 : Dng TCP
Bc 1 : Thit k giao din cho Client, Server
Client Server

Bc 2 : Vit m
Cho Client
//Khai bo thm cc khng gian tn
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Threading;
//Kt ni n Server
private void btnConnect_Click(object sender, EventArgs e)
{
// nu cha kt ni thi im hin ti th i kt ni
if (Connected == false)
{
// Gi th tc ci t kt ni
InitializeConnection();
}
// nu kt ni ri th ngt kt ni
else
{
//Gi th tc ng kt ni
CloseConnection("Disconnected at user's request.");
}
}
{
// Will hold the user name
private string UserName = "Unknown";
//Bin gi d liu
private StreamWriter swSender;
//Bin ghi d liu
private StreamReader srReceiver;
//i tng TcpClient
private TcpClient tcpServer;
// Needed to update the form with messages from another thread
private delegate void UpdateLogCallback(string strMessage);
// Needed to set the form to a "disconnected" state from another thread
private delegate void CloseConnectionCallback(string strReason);
private Thread thrMessaging;
//Bin IP Address
private IPAddress ipAddr;
//Trng thi kt ni
private bool Connected;

public Form1()
{
// On application exit, don't forget to disconnect first
Application.ApplicationExit += new EventHandler(OnApplicationExit);
InitializeComponent();
}

// The event handler for application exit


public void OnApplicationExit(object sender, EventArgs e)
{
if (Connected == true)
{
// Closes the connections, streams, etc.
Connected = false;
swSender.Close();
srReceiver.Close();
tcpServer.Close();
}
}
//Th tc kt ni
private void InitializeConnection()
{
// Kim tra a ch IP ca hp Textbox
ipAddr = IPAddress.Parse(txtIp.Text);
// To mi 1 TCP kt ni vi Chat server
tcpServer = new TcpClient();
tcpServer.Connect(ipAddr, 1986);
// Ngn trng thi kt ni c ri l true
Connected = true;
// Gn tn ngi dng
UserName = txtUser.Text;

// ng v kch hot cc trng


txtIp.Enabled = false;
txtUser.Enabled = false;
txtMessage.Enabled = true;
btnSend.Enabled = true;
btnConnect.Text = "Disconnect";

// Gi tn ngi dng n Server


swSender = new StreamWriter(tcpServer.GetStream());

swSender.WriteLine(txtUser.Text);
swSender.Flush();

// Bt u tin trnh nhn cc tin nhn v trng thi ni kt


thrMessaging = new Thread(new ThreadStart(ReceiveMessages));
thrMessaging.Start();
}

//Th tc nhn tin nhn


private void ReceiveMessages()
{
// Nhn thng tin t Server
srReceiver = new StreamReader(tcpServer.GetStream());
// Nu k t u tin ca chui nhn c l 1 th kt ni thnh cng
string ConResponse = srReceiver.ReadLine();
// If the first character is a 1, connection was successful
if (ConResponse[0] == '1')
{
// Update the form to tell it we are now connected
this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] { "Connected
Successfully!" });
}
else // If the first character is not a 1 (probably a 0), the connection was unsuccessful
{
string Reason = "Not Connected: ";
// Extract the reason out of the response message. The reason starts at the 3rd
character
Reason += ConResponse.Substring(2, ConResponse.Length - 2);
// Update the form with the reason why we couldn't connect
this.Invoke(new CloseConnectionCallback(this.CloseConnection), new object[] {
Reason });
// Exit the method
return;
}
// While we are successfully connected, read incoming lines from the server
while (Connected)
{
// Vit cc d liu nhn c t Server vo txtlog
this.Invoke(new UpdateLogCallback(this.UpdateLog), new object[] {
srReceiver.ReadLine() });
}
}

// This method is called from a different thread in order to update the log TextBox
private void UpdateLog(string strMessage)
{
// Append text also scrolls the TextBox to the bottom each time
txtLog.AppendText(strMessage + "\r\n");
}

// Th tc ng kt ni hin ti
private void CloseConnection(string Reason)
{
// Xem l do ti sao kt ni b dng
txtLog.AppendText(Reason + "\r\n");
// Kch hot hoc ng cc iu khin
txtIp.Enabled = true;
txtUser.Enabled = true;
txtMessage.Enabled = false;
btnSend.Enabled = false;
btnConnect.Text = "Connect";

// ng cc i tng
Connected = false;
swSender.Close();
srReceiver.Close();
tcpServer.Close();
}

// Gi tin nhn n server


private void SendMessage()
{
if (txtMessage.Lines.Length >= 1)
{
swSender.WriteLine(txtMessage.Text);
swSender.Flush();
txtMessage.Lines = null;
}
txtMessage.Text = "";
}

// Khi mun gi tin nhn th n vo nt send gi


private void btnSend_Click(object sender, EventArgs e)
{
SendMessage();
}

// But we also want to send the message once Enter is pressed


private void txtMessage_KeyPress(object sender, KeyPressEventArgs e)
{
// If the key is Enter
if (e.KeyChar == (char)13)
{
SendMessage();
}
}

Code cho Server


//Lng nghe kt ni
private void btnListen_Click(object sender, EventArgs e)
{
// Kim tra IP ca server TextBox
IPAddress ipAddr = IPAddress.Parse(txtIp.Text);
// To 1 i tng mi ca ChatServer
ChatServer mainServer = new ChatServer(ipAddr);
// Hook the StatusChanged event handler to mainServer_StatusChanged
ChatServer.StatusChanged += new
StatusChangedEventHandler(mainServer_StatusChanged);
// lng nghe kt ni
mainServer.StartListening();
// th hin lng nghe cc kt ni
txtLog.AppendText("Monitoring for connections...\r\n");
}

public void mainServer_StatusChanged(object sender, StatusChangedEventArgs e)


{
// Gi phng thc cp nht ca Form
this.Invoke(new UpdateStatusCallback(this.UpdateStatus), new object[] {
e.EventMessage });
}

private void UpdateStatus(string strMessage)


{
// Cp nht cc tin nhn vo txtLog
txtLog.AppendText(strMessage + "\r\n");
}
CU HI N TP
Cu 1 : Nu khi nim v lp trnh Socket ?
Cu 2 : Nu khi nim v IP v Port trong lp trnh mng

Cu 3 : Nu mt s ng dng v qui nh i vi Port ?


Cu 4 : Nu cc c trng c bn (Khi nim, cc thuc tnh v phng thc)
ca lp IPAddress?
Cu 5 : Nu cc c trng c bn (Khi nim, cc thuc tnh v phng thc)
ca lp IPEndPoint?
Cu 6 : Nu cc c trng c bn (Khi nim, cc thuc tnh v phng thc)
ca lp IPHostEntry?
Cu 7 : Nu cc c trng c bn (Khi nim, cc thuc tnh v phng thc)
ca lp DNS?
Cu 8 : Nu cc c trng c bn (Khi nim, cc thuc tnh v phng thc)
ca lp UDPClient?
Cu 9 : Nu trnh t kt ni ca Lp UDPClient? (Pha Server v Client)
Cu 10 : Nu cc c trng c bn (Khi nim, cc thuc tnh v phng thc)
ca lp TCPClient?
Cu 11 : Nu trnh t kt ni ca Lp TCPClient? (Pha Server v Client)
Cu 12 : Nu cc c trng c bn (Khi nim, cc thuc tnh v phng thc)
ca lp TCPListener?
Cu 13 : Nu cc c trng c bn (Khi nim, cc thuc tnh v phng thc)
ca lp TCPListener?
Cu 14 : So snh gia hai giao thc TCP v UDP trong lp trnh mng.

BI TP
Bi 1: Vit chng trnh Sever gii p tn min. Nu my khch gi tn my
th sever s gi v a ch IP (danh sch ny t to ra khon 3 cp minh
ho).
Bi 2: vit chng trnh UDP (ng dng A) t trn mt my thc hin cc
cng vic sau, khi mt ng dng B gi 1 kiu chui ting Anh th ng dng A s
gi tr li ngha ting Vit tng ng. Nu t ny khng c trong t in (ch c
3 t Computer,Ram,HDD)th ng dng A cho ngi dng bit t ny khng c
trong t in.
Bi 3: Vit chng trnh Client/Sever trong khi Client di chuyn chut th
sever cng di chuyn theo.
Bi 4: Vit Chng trnh Client/Server khi Client gi Shutdown,Restast th
Sever khi ng hoc tt my tng ng
Bi 5: Vit chng trnh Chat gia cc my tnh ?
HNG DN THC HIN
1. Nghin cu ti liu v l thuyt lin quan n bi thc hin cc cu
hi 1 n 14.
2. Phn tch cc chc nng ca cc bi tp
3. Thit k giao din (Form) cho mi bi tp.
4. Vn dng cc phng thc trong lp Sockets xy dng cc ng
dng bi tp.

You might also like