• Xay d\ffig chuang trinh trng d\lng : Tim hiSu vS giao thuc m~ng va su d\lng ngon ngii C# dS xay dgng chuang trinh cho phep nguai dung gui thong di~p vachat v6'i dich thu?t b~ng nhfrng
Trang 1.i
BO GIA.O DUC vA DAo TAO TRUONG DHDL NGOAI NGU-TIN HOC TP.HCM
KHOA CONG NGH~ THONG TIN
" "
Xay d\fng ph an mem cho phep ngum dung gUi thong di~p va
-chat VOl djch thu,t bang cac cau co san
GIANG VIEN HUONG DAN: Th.S Vfi Thanh Hi~n SINH VIEN THlfC HI~N: Nguy~n Huy
Ngo Tii Lien
TP.HO CHi MINH - 2005
Trang 21.1.1 SO' IU'qc ve Net •••.• • ••.•.•.• • •.• • •.• 4
1.1.3 Di~m m~nh cua Net • 4
1.2 Cac thanh ph~n chinh clla Net Framework 51.2.1 Moi trU'rrng Common language Runtime (CLR) 51.2.2 Net Base Classes Library (BCL ) 6
1 32• • f)"(}CI"~p VOl DeD va'" A 'b"(} Xlf., I'y • • • • •.•.••.••.••.• • •.•.• •••.• •.61.3.3 QUaD Iy bQ nh& t• •.dQng ••••.• •.•••••••.•.••.•••••.••••• ••.•.• •• •.• 6
1.3.4 HB trg phien baD •••••••••••••••••••••••••••••••••••••.••••••••••••••••••.•• ••.•.•••6
1.3.6 Tri~n khai d~ dang•.••••.•••.••.••.• •.••.• •.• • • • •.6
1.3.8 Thao tac gifra cac ph~n vOi rna khong quan If 71.3.9
2 1• G '" th""101 ? I~UveA ngoD ngw " - C# ••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••8
217 . K""tern soa ngo~t ~'t I" .9
2 2. CAt'au rue err b."."an eua ngoo ngO'" - C# .11
Trang 3Sub n et Mas k 31
Nhu'ng ti~n ich khi dung thread 33
Cae kh6 khan khi d iJog thread : 34
Giao ThucDia Chi IP
2.3 ADO.NET va L~p trinh CoosO'du'li~u 14
2.4.2 ThO'vi~n cac ham socket trong C# 17Ph~n 2: Xay d,!ng chO'O'ngtrinh ung dl}ng 21ChO'O'ng1: Tim hi~u ky thu~t l~p trinh Socket: 211.1 Cac Khai Ni~m Co' Ban v~H~ Th8ng M~ng 211.1.1
2.2.2 Co' ch~ ho~t dQng phia trinh
3.1.1 D8i v6'i ngO'01.quan tri Admin 40
3.2.1 Tinh d~ mo' rQngva d~ bao tri 44
Trang 4ky 55nh~P •.• ••• ••.••.• •• •• • • 54Tinh tieo 101, tlnb d~ su d uog. 44
I
3.2.2
3.2.3 Tin h bao mit •• 44
4.1.1 ciu true dfr lieu dich thuat :. 454.1.2 Dfr li~u luu trfr thong tin User 50
4.3.1 User Dang
4.3.4 Admin Dang4.3.5 Admin Them can dich thuat . 564.3.6 Admin Xoa quy~n dang nhip ella User 564.4 Thi~t k~va xu Iy cae giao di~n ehinh ella ehuO'ng trinh 574.4.1 Form Dang nhip ehuO'ng trinh 57
4.4.5 Form T~o Room mai • •.• 61
4.4.9 Form Dang nhip h~ th8ng ella Admin 64
Trang 5Trang 1
Chung em xin chan thanh cam an cac th~y co khoa Cong Ngh~ Thong Tin dat~n tinh giang d~y, mang d@ncho chung em nhung ki@nthuc b6 ich Do langu6n tri thuc quy bau va la nSn tang vfrng chAc cho tuang lai chung em
Chung em chan thanh cam an th~y Vii Thanh HiSn da nhi~t tinh huang dftn,chi bao chung em trong su6t thai gian th\fc hi~n dS tai nay
Ben c~nh do chung em xin cam an vS cong an du6ng d\lc Clla cha my va S\fgiup dO'tu b~n be dS co duQ'cngay hom nay
M~c du da c6 gAng th\fc hi~n vai tfit ca S\f n6 l\fC Clla bfm than, nhung k@tquath\fC hi~n clla dS tai se khong tranh kh6i nhung thi@usot, kfnh mong S\l'thongcam clla quy th~y co
Chung em xin chan thanh cam an.
Sinh vien th\fc hi~nNgo Tu Lien MSSV 0111592NguySn Huy MSSV 0111494
Trang 6
-Trang 2
" "
Phan M«Dau
1 Tinh c~P thi~t Clla d~ tai
Hi~n nay, Khoa hQc Ky thu~t va Cong ngh~ Thong tin phat triSnnhay vQt, ben c,;mh cac dich V\l thong thuemg rna chung ta v~n su d\lnghang ngay tren Internet OOutruy c~p trang web, Email Chung ta co thS
su d\lng mQt dich Y\l khac mia do la HQi tho(;1i-Chatting Chat la trochuy~n, trao d6i thong tin vai nhau tren m(;1ngInternet Co nhiSu chuang
triOO h6 trq cho phep chung ta chat tn.rc tiSp (OOung nguai chat dang
Online) ho~c gian tiSp (OOling nguai chat dang Offline) vai d6i phuang(b(;1nchat) Chung ta co thS chat bAng chu (text), chat bAng am thanh(voice) ho~c bAng hiOOaOO(web-cam)
Tuy nhien hi~n nay, theo OOu hiSu biSt cua chung em, cac chuang
triOO chat v~n chua h6 trq vi~c dich thu~t, nen vi~c dua dich thu~t cac
ngon ngu vao ling d\lng co thS t(;10Co' hQi cho mQi nguai tuy khong clingngon ngu nhung v~n co thS dS dang trao d6i, lien l(;1cvai nhau
Va dS th\fc hi~n thaOO cong y tUOng tren, chung em da chQn ngonngu C# dS xay dvng trng d\lng nay
2. Y nghia khoa hQCva thl}'Cti~n
2.1 Y nghia khoa hQc :
Ngay nay, S\f giao tiSp giua con nguai va may tinh ngay cangcao Vi~c da hoa ngon ngu da duqc nhiSu nha cung trng ph~n mSmdua vao su d\lng Nhu hang Microsoft da cho ra dai ph~n mSmMicrosoft Vi~t hoa song song vai nhling phi en ban viSt bAng tiSng
Anh Tu do cho ta th~y mQt buac OOaymai trong vi~c tich hqp da
ngon ngu vao mQt s6 ph~n mSm ling d\lng
2.2 Y nghia thl}'cti~n :
Trong thai d(;1ingay nay, Internet da xam nh~p h~u OOut~t camQi 1100 vvc tu vi~c trao d6i thong tin, hQc t~p, buon ban dSn vi~c dichq qua m(;1ng.Trong do chat la phuang ti~n giao tiSp duqc nhiSunguai biSt dSn Nhung hi~n nay cac chuang triOOchat v~n con thiSuh6 trq ngon ngu khi chat NSu mu6n kSt b(;1nvai mQt nguai a mQt
qu6c gia khac rna v6n tiSng nuac ngoai khong co thi r~t kho khan.
Nhung nSu ta dua vi~c dich thu~t vao chuang triOO chat thi mQinguai dli b~t cli dau dSu co thS trao d6i vai nhau rna khong c~n biStnhiSu ngon ngu
Trang 7Trang 3
3 Ml}c dich nghien cuu
3.1 Muc dich tAng quat:
• Tim hiSu ngon ngfr C# :
Trong phdn nay bao cao gi6'i thi~u sa lugc vS d~c diSm,
tinh nang uu khuySt cua moi truOng Net Framework.Trinhbay vS cac d~c trung cua ngon ngfr C#
• Xay d\ffig chuang trinh trng d\lng :
Tim hiSu vS giao thuc m~ng va su d\lng ngon ngii C# dS xay
dgng chuang trinh cho phep nguai dung gui thong di~p vachat v6'i dich thu?t b~ng nhfrng cau co s~n dga tren hai ngon
ngii TiSng Vi~t va TiSng Anh.
3.2 Muc tieu cu th~
• Tim hiS~ ra vS ngon ngfr C# tren moi truOng Net
• Xay dgng dugc chuang trinh trng d\lng giup nguai dung cothS chat public va chat private
• Ben c~nh do chuang trinh con dich thu?t theo hai ngon ngii
Vi~t va Anh trong khi chat
4 D8i tU'Q'ngva ph~m vi nghien cuu
4.1 D8i tU'Q'ngnghien cuu
• Nhfrng 19i ich rna NET dem l~i
• Ngon ngfr C#
• Cac ham Socket, Thread, Stream,
• ADO.NET,
• Ca chS Chat client/server
• Cach luu trii dii li~u tren file.
• C~u truc bang bam va t?P tin chi m\lc
4.2 Ph~m vi nghien cuu
• Chuang trinh chat co thS trng d\lng tren m~ng C\lCbQ
• Chuang trinh chi h6 trg dich thu?t 2 ngon ngii Vi~t va Anh.
• Cau dich thu~t chu ySu dga tren nhfrng cau co s~n
Trang 8Ph~n 1 - Chuang 1 : Sa lugc vS NET Frameworks
.Net da cung cfip giai phap lam cho du li~u va Ung dVng co th@dugctruy c~p bai bfit ky thiSt bi nao tren internet Ngoai ra Net con cho phepchung ta xay dvng cac chuang trinh quan ly du li~u tren Internet thongqua nh~n d<;tngchu viSt, gi<;mgnoi va cac ky thu~t hinh anh
Phien ban d~u tien cua Net ch<;tytren h~ diSu hanh Windows.Tuang lai se lam vi~c tren cac moi twang khac nhau nhu Linux,Macintosh, PDA,
1.1.2 Nhu'ng IQi ich clla _Net
.Net cung cfip moi twang tich hgp lam cho vi~c l~p trinh dan gie:mhan Chu trinh phat tri@n ng~n han nh6 vi~c tai su dVng rna, chung tacung co th@tuang tac va su dVng l<;tinhung ung dVng dugc t<;tob~ng Net Net su dVng XML cho vi~c giao tiSp giua nhung may tinh khacnhau tren nhung nSn tang khac nhau
1.1.3 Di~m manh clla Net
Dan gian -hoa vi~c phcit tri@n cac ung dVng clien/server Cac congngh~ phan tan hi~n nay doi hoi m6i lien h~ cao va thiSu SV'cQng tac v6'imoi truang Web V6'i Net ta dugc cung cfip mQt kiSn truc tu xa, khaithac cac chu~n Internet rna, nhu giao thuc HTTP, ngon ngu danh dfiurna
rQng va giao thuc xu ly d6i tugng dan gian (SOAP)
H6 trg cac thanh ph~n COM
.Net dugc thiSt kS sao cho no co th@dugc su dVng tu bfit ky ngonngu nao Bao g6m : C#, Visual Basic, C++, Jscript va ngay ca cac ngonngu cu nhu COBOL , khong chi chung truy c~p t6'i Net Framework,chung co th@lien l<;tcv6'i nhau
Trang 9Phfin 1 - Chuong 1 : Sa lugc vS NET Frameworks
1.1.4 N~n bing eua Net
NSn tang clla Net g6m 5 thanh phfin chinh :
Trang 5
.NET Enterprise Servers
.NET Framework
.NET Building Block Services
2000, dS lam don gian va thu ng~n thai gian cfin thiSt dS phattriSn va quan ly h~ th6ng
• MQt s6 dich V\ldugc xay d\l1lg thanh kh6i
• 6 tfing cao nhfrt Clla kiSn truc NET la cong C\l phat triSn m6inhfrt co ten gQi la Visual Studio NET, h6 trg cho chung ta phattriSn nhanh cac lmg d\lng Visual Studio NET h6 trg b6n ngonngu l~p trinh (C#, VB.Net, C++, J#) va mQt s6 chuc nang nhu :bien dich ,gO' r6i,
• Cu6i cung la moi truang Command Language Runtime
1.2 Cae thanh phAn ehinh ella Net Framework
1.2.1 Moi trU"(yngCommon language Runtime (CLR)
Thanh phfin quan trQng nhfrt clla Net Framework la CommonLanguage Runtime Tuang t\1 nhu may ao clla Java "Java VirtualMachine", CLR la moi truang quan ly S\1th\1c thi g6m quan ly vi~c cfrpphat bQ nh6, bfiy 16i, va tuong tac v6i cac service cua h~ diSu hanh
CLR su d\lng trinh bien dich Just In Time (JIT) dS chuySn rnaIntermedia Language (IL) thanh rna native
Trang 10Ph~n 1 - Chuong 1 : Sa luQ'cvS NET Frameworks Trang 6
1.2.2 Net Base Classes Library (BCL)
MQt t~p hQ'P rQng IOn cua cac thanh ph~n l~p trinh nhu lap, giaodi~n, cac kiSu gia tri va cac giao di~n l~p trinh tmg d\lng ApplicationProgramming Interface (API)
1.3 Cac dac tioh clla Net
1.3.1 Tri~n khai da ngon ngii'
Cho phep cac ngon ngfr duQ'c tich hQ'Pv6i mQt ngon ngfr khac thongqua vi~c su d\lng Microsoft Intermedia Language (MSIL)
Garbage Collection thinh thoang kiSm tra bQ nh6 may tinh, va xoab~t cu cai gi rna no khong con c~n dSn nfra
1.3.4 98 trg phien ban
KiSn truc Net phan cac thanh ph~n tmg d\lng sao cho mQt ung d\lngluon luon n?p cac thanh ph~n rna no duQ'c xay dvng va kiSm tra
1.3.5 98 tnr cac chu~n rnG'
Cac kiS~ truc cua Net dva tren XML, SOAP
Cac chuAn khac UDDI (Universal Description, Discovery, andIntegration), thu m\lc va XML cua cac cong ty, WSDL (Web ServicesDescription Language)
1.3.6 Tri~n khai d~ dang
Cac thanh ph~n Net khong tham chiSu trong Registry do su d\lngmetadata va sv phan chiSu , cac thanh ph~n tv mo ta
1.3.7 Ki~n truc phan tan
DuQ'c thiSt kS dS h6 trQ'cac tmg d\lng phan tan
Cac thanh ph~n duQ'c t?O co thS cu tru ben trong cac process khactren cung mQt may ho~c tren may khac qua m?ng
Trang 11Ph~n 1 - Chuang 1 : Sa luqc v@.NET Frameworks Trang 7
1.3.8 Thao tac gifra cac phdn vOi rna khong quan If
Ma khong quim ly la rna khong duqc quan ly boi CLR
Ma nay v~n ch~y boi CLR, no khong duqc cac lqi thS nhu rna quan
ly co, ch~ng h~n nhu : Cornman Type System (CTS) , quan ly bQ nha tvdQng,
Bao g6m:
• Ma quim ly g9i cac ham DLL khong quan ly
• Ma quan ly su d\lng cac thanh ph~n COM
• Ma quim ly dung cac service Net tiTcac thanh ph~n COM
Trang 12Ph~n 1 - Chuong 2 : Ngon ngu C#
kS tu ba ngon ngu C++, Java, Visual Basic
C# dugc coi nhu la ngon ngu duy nh~t thiSt kS tu nSn len cho NetFramework va co thS la ngon ngu chinh su dVng trong cac phien b~mclla.Net rna dugc chuySn tai cac h~ diSu hanh khac
2.1.2 Cae ung d\lng
Co 3 d?ng Ung dVng :
• Window Application: su dVng Windows Form clla Net Framework
va cac control (button, menu, panel, listbox, richtextbox, ) dS xaydVng giao di~n nguai dung User Interface (UI) Clla Windows
• Web Application: La cac trang web co thS xem thong qua b~t ky trinhduy~t web nao Net Framework bao g6m mQt h~ th6ng m?ng dS phcitsinh nQi dung web dQng gQi la Active Server Pages.Net (ASP.Net)
• Web services : DiSu nay mai va kich thich cach t?O cac Ung dVngphan ph6i mQt cach linh ho?t Su dVng cac web service, chung ta cothS thay d6i g~n nhu b~t ky du li~u nao tren Internet, su dVng cung cuphap don giim b~t ch~p ngon ngu su dVng dS t?O mQt web service,ho~c h~ th6ng rna no cu tm
2.1.3 Khong gian ten
Khai ni~m khong gian ten namespace cling tuong tv nhu khai ni~mpakage clla Java, co nghia la khai bao dinh danh cung vai cac thong tintrong lap Cllano vao trong project clla C#
Vi~c khai bao khong gian ten la duy nh~t
2.1.4 Giao ti~p nh~p / xu~t
DS kSt xu~t ra man hinh chung ta dung khong gian ten System valap Console
Cac phuong thuc dQc du li~u tu man hinh :
• Read 0 :DQc ky tv kS tiSp tu dong nh~p chuftn
• ReadLine 0 :DQc dong kS tiSp tu dong nh~p chuftn
Trang 13Ph~n 1- Chuang 2 : Ngon ngfr C#
Cac phuong thuc xu~t dfr li~u ra man hinh :
• Write 0 :Xu~t chu6i ra man hinh
• WriteLine 0 :Xu~t chu6i ra man hinh, co
Trang 9
,xuong dong
2.1.5 Ki~u dfr li~u trong C#
Co 3 lo~i kiSu dfr li~u
• KiSu gia tri : duQ'c c~p phat tren vung nha stack, g6m cac kiSu co
s~n (int, bool, string, ), kiSu li~t ke (enum) va kiSu c~u truc(struct)
• KiSu tham chiSu : duQ'c c~p phat tren vung nha heap, g6m lap
(class), giao di~n( interface) va delegate
• KiSu con tro : chi Slrd\Jng trong cac do~n rna "khong an toan"
2.1.6 Quy uO'c d~t ten
Vi~c d~t ten bao g6m ten lap, ten phuang thuc, thuQc tinh, va mQts6 S\1'ki~n, biSn va d6i tUQ'llgtrong do :
• Ky t\1'd~u tien phcii la chfr, d~u g~ch, ho~c d~u @
• Cac ky t\1'tiSp theo phcii la chfr , d~u g~ch duai ho~c s6
Ngon ngfr C# co phan bi~t chfr hoa va chfr thuemg
D6i vai khai bao biSn chung ta dung tu d~u tien d~i di~n cho kiSu dfrli~u, kS dSn la ten cua biSn
2.1.7 Ki~m 80at ngo~i I~
KiSm soat ngo~i l~ la cho phep ngmJi l?p trinh kiSm soat cac 16iphat sinh trong qua trinh th\1'cthi chuang trinh dS khong bi dung chuangtrinh trong luc ch~y
Co 3 phat biSu kiSm soat ngo~i l~ :
• Don b~t ngo~i l~ vai phat biSu try - catch
• Xoa ngo~i l~ vai phat biSu try - finally
• KiSm soat ngo~i l~ vai try-catch-finally
Trang 14Ph~n 1 - Chuang 2 : Ngon ngfr C# Trang 10
2.1.8 Nem ngo~i l~
Khi don b~t ngo~i l~, phai chi thj nem chung b~ng phat biSu sau:
• Throw new ArgumentExceptionO;
Bang ngo~i l~ chuAn :
Exception Lap co sa cho tiit ca cac doi tUQ11g
ngo~i l~
SystemException Lap co sa cho tM ca cac 16i t~o ra
trong qua trinh th\fc thi
IndexOutOfRangeException Phcit sinh 16i trong qua trinh th\fc
thi khi mang danh m\lc vuqt quagi6i h~n
NullReferenceException L6i phcit sinh khi mQt doi tUQ'ng
r6ng duQ'c tham chiSu
InvalidOperationException L6i do khi g9i den phuang thuc
cua tr~ng thai hi~n t~i cua d6itUQ11g
ArgumentException Lap co sa cho tat ca cac tham so
ngo~i l~
ArgumentNullException ~go~i l~ cho truOng hQ'ptham so la
rong
ArgumentOutOfRangeException Ngo~i l~ cho truOng hQ'P tham s6
khong thuQc vung dfr li~u chophep
InteropException Lap co sa cho ngo~i l~ khi th\fc thi
trong moi truOng n~m ngoai thaigian th\fc thi NET
Bang 2.1
Trang 15Ph~n 1 - Chuong 2 : Ngon ngfr C# Trang 11
2.2 CiD truc cooban clla ngon ngfr C#
2.2.1 Binh nghia L6'p
MQt lOp la mQt c~u truc dfr li~u chua cac thanh vien dfr li~u (cach&ng, cac truemg dfr li~u), cac ham thanh vien( cac phuong thuc, cacthuQc tinh, cac indexer, cac s\1' ki~n, cac toan tu, cac constructor,destructor) va cac kiSu 16ng nhau
[modifiers] class identifier [: base-list]
{
// class body}
Trong do:
• modifiers: new, abstract, sealed va 4 modifier truy c~p (public,protected, internal, private)
• identifier: ten lOp
• base-list: danh sach chua mQt lOp cO'sa va b~t ky giao di~n thvcthi nao, duQ'c cach nhau bai d~u ph~y
"
d"fi t
onmo I ler ruy c~p
nang truy c~p
Public Truy c~p khong giai h:;m
Protected Truy c~p co giai h~n alOp, dfin xuat tit lap.
Internal Truy c~p co giai h~n aproject hi~n t~i
Private Truy c~p co giai h~n akieu chua
• Static constructor : GQi t\1'dQng dS khai dQng lap truac khi thvc
thS d~u tien duQ'c t~o ho~c b~t ky thanh vien tinh nao duQ'c thamchieu Constructor lo~i nay khong co tham s6 va khong comodifier truy c~p
Trang 16Phfin 1 - Chuong 2 : Ngon ngu C# Trang 12
2.2.3 Destructor
La mQt thanh vien duQ'c dung dS huy mQt th\fc thS cua lap
Destructor co cung ten vai ten lap phia truac co d~u ~, destructor
khong co tham s6 va khong co modifier truy c~p
Do~n rna trong destructor se duQ'c gQi khi garbage collection xay ra,cho phep chung ta giai phong tai nguyen
2.2.4 Binh nghia giao di~n ,
MQt giao di~n dinh nghla la mQt hqp dong
MQt lap ho~c struct th\fc thi mQt giao di~n phai tham gia vao hqpd6ng cua no
MQt giao di~n co thS kS thll'a tll' nhiSu giao di~n co So', lap ho~cstruct th\fc thi nhiSu giao di~n
Cac giao di~n co thS chua cac phuong thuc, cac thuQc tinh, cac S\fki~n va cac indexer
[modifiers] interface identifier [: base-list]
{
// interface body}
Trong do:
• modifiers: cho phep cac modifier la new va 4 modifier truy c~p(public, protected, internal, private)
• identifier: ten giao di~n
• base-list: danh sach chua mQt hay nhiSu giao di~n cach nhaubai d~u phfty
2.2.5 Binh nghia Delegate
La mQt kiSu cho phep chung ta luu tru cac tham chiSu t6i cac ham
No duQ'c khai bao gi6ng nhu khai bao ham nhung khong co than ham va
[modifiers] delegate result-type identifier
([formal-parameters ]);
Trang 17Phfin 1 - Chuong 2 : Ngon ngfr C# Trang 13
2.2.6 ThuQc tinh Get va Set
Hai phuong thuc Get va Set trong C# duQ'c gQi la thuQc tinh, thuQctinh Get la mQt phat biSu tni vS gia tri, thuQc tinh Set la mQt phat biSugan gia trio
Cac S\f ki~n trong C# cai d~t vai cac delegate MQt phuong thuc xu
ly illQt S\f ki~n duQ'c gQi la mQt bQ xu ly S\f ki~n (event handler) tra vSvoid va co hai tham s6 :
• Tham s6 dfiu tien la ngu6n S\fki~n (d6i tUQ'llggay ra S\fki~n), do
la d6i tUQ'llgpublish(gQi la publisher)
• Tham s6 thu hai la mQt d6i tUQ'llgchua thong tin vS S\f ki~n, d6itUQ'llgnay phai d~n xu~t tir lap EventArgs EventArgs la lap Co'
So' cho mQi dfr li~u S\fki~n
[modifiers] event type declarator
[modifiers] event type member-name
{
II accessor-declarations
}
Trong do
• ~: la delegate rna chung ta lien kSt S\fki~n nay
• declarator, member-name: ten cua S\fki~n
• accessor-declarations: khai bao cac accessor su d\mg dS them vahuy cac bQ xu ly S\fki~n (option)
Trang 18Phfrn 1 - Chuang 2 : Ngon ngfr C# Trang 14
2.3 ADO.NET va L~p trioh Coo sir dfr li~u
2.3.1 GiOi thieu v~ ADO.NET.
ADO.Net la mQt lap trong Visual Studio.Net, chung chia ra lam hailo?i : lap k@tn6i (Connected Layer) va lap khong k@tn6i (DisConnectedLayer) V6i hai lap nay b?n co thS k@tn6i va thao tac tren cac lo?i co So'
d~ li~u nhu SQL Server, MySQL, Ms Access, Oracle, co So' dfr li~u phancap
ADO.Net duqc thi@tk@ nhu mQt cong ngh~ truy xuftt dfr li~u khongk@tn6i va phan ph6i d\Ia tren chu~n XML
ADO.Net duqc dinh nghTa trong khong gian ten: System.Data
co b6n lap :
• Connection: Lap k@tn6i co So' dfr li~u
• DataAdapter: Lap chua dfr li~u
• Command: Lap chua l~nh
• DataReader: Lap dQc dfr li~u
2.3.3 L6'p k~t nBi Connection
Thi@tlap va rnak@tn6i :
IISu dVng khong gian ten SQL Server.NET
using System.Data SqIClient;
IIT?o d6i tuqng k@tn6i
SqlConnection conn = new SqlConnection connO;
IIThi@t l~p thuQc tinh chu6i k@tn6i
conn.ConnectionString = "Server=127.127.127.127''' +
"Initial Catalog=temp'''+''User, Id = sa' Password = sa'''', , ,
liMa k@tn6i conn.OpenO;
IIDong k@tn6i conn.CloseO;
Trong do:
• Server: ten server co cai d~t SQL Server
• Initial Catalog: ten co sa dfr li~u
• User Id : tai khoan dang nh~p co sa dfr li~u SQL Server
• Password: m~trna dang nh~p co sa dfr li~u SQL Server
Trang 19Ph~n 1 - Chuang 2 : Ngon ngu C# Trang 15
2.3.4 L6'p chua I~nh Command
D6i tuqng Command duQ'c su dVng khi mu6n thlJc thi mQt diu truyvc1ndu li~u
ThiSt lap va rnakSt n6i : conn
IlKhai bao biSn d6i tuqng Command
SqlCommand cmmAcc;
IICau l~nh truy vein
string strSql ="select * from tblUser" ;
IIKhai t(;10d6i tuqng Command
cmmAcc =new SqICommand(strSql, conn);
2.3.5 Lo.p dQc dfrIi~u DataReader
Lap DataReader la lap chi dQc, du li~u duQ'C dQc theo mQt chiSu,lap nay huu dVng khi b(;1nc~n tiSt ki~m bQ nha, bai vi t(;1imQt thai diSmchi luu tru mQt m~u tin
ThiSt lap va rna kSt n6i : conn
IIKhai bao biSn d6i tUQ'ng Command
SqlCommand cmmAcc;
IIKhai bao biSn d6i tuqng DataReader
SqlDataReader drdSql;
IICau l~nh truy vc1n
string strSql ="select * from tblUser" ;
IIKhai t(;10d6i tuqng Command
cmmAcc =new SqICommand(strSql, conn);
IID6ng d6i tuqng DataReader
drdSql.CloseO;
Trang 20Ph~n 1 - Chuang 2 : Ngon ngfr C# Trang 16
2.3.6 L6'p chua dfr li~u DataAdapter
LOp DataAdapter dung dS nh~n dfr li~u tiI dfr li~u ngu6n, sau dotruySn vao DataSet va cac lOp quan h~ nhu DataTable, ngoai ra con c~pnh~t dfr li~u thay d6i vao dfr li~u ngu6n v6'i cac thuQc tinh cuaCommand
4 thuQc Hnh clla Command
• SelectCommand
• InsertCommand
• UpdateCommand
• DeleteCommand
ThiSt Hipva rna kSt n6i : conn
//Khai bao 2 d6i tUQ'IlgCommand
SqlCommand cmmSelect;
SqlCommand cmmDelete;
//Khai bao d6i tUQ'Ilgtham s6
SqlParameter prmSqlDelete, prmSqlUpdate;
//Cau l~nh troy vftn
string strSelect ="select * from tblUser" ;
string strDelete ="delete from tbIUser";
//Khai t~o d6i tUQ'IlgCommand
cmmSelect = new SqICommand(strSelect, conn);
cmmDelete =new SqICommand(strDelete, conn);
//Khai t~o d6i tUQ'IlgSqlDataAdapter tmg v6'i cau select
SqlDataAdapter ada = new SqIDataAdapter(strSelect, conn);
//Gan thuQc tinh l~nh vao d6i tUQ'IlgDataAdapter
ada.SelectCommand =cmmSelect;
ada.DeleteCommand =cmmDelete;
Trang 21Ph~n 1 - Chuang 2 : Ngon ngfr C# Trang 17
2.4 Cae khai Diem v~ ham Soket
2.4.1 Khai ni~m v~ socket
Trong mo hiOOm~ng dS hai may tiOOco thS trao d6i thong tin cho
nhau thi c~n phai t~o ra kSt n6i gifra chung Trong qua triOO lam vi~c
nguai ta nh~n th~y r&ng OOfrngnha l~p triOOlmg d\lng r~t kho khan trong
vi~c thiSt l~p kSt n6i va truySn tai dfr li~u gifra cac may tiOOvai OOau.Vi
thS nguai ta xay d\IDg khai ni~m socket, khai ni~m nay duQ'c dua ra d~u
nhfrng nam 80 bai cac OOakhoa hQc may tlnh aCalifornia t~i Berkeley
Khai ni~m nay duQ'c dua ra tu y tuang phan t~ng, trong do Windows
sockets Application Programming Interface(Winsock API) la thu vi~n
cac ham do hang Berkeley Software Distribution of UNIX dua ra Nh&m
lam dan gian hoa qua trinh thiSt l~p kSt n6i va chuySn dfr li~u Socket
d\1a tren giao thuc TCPIIP t~o moi truang trung gian cho cac ung d\lng
va giao thuc ben duai
Socket duQ'c xem la m(>t c~u truc dfr li~u truu tuqng (abstraction
data structure) dung t~o ra m(>tkeOOtruySn (channel) dS gai va nh~n dfr
li~u gifra cac process trong cung chuang triOO hay gifra cac may trong
cung moi truang m~ng vai nhau Hay noi m(>t cach dan gian han chung
ta xem socket nhu la "Co' chS 6 c~m" Khi kSt n6i gifra Client va Server
tuang t\1 nhu vi~c c~m phich di~n vao 6 c~m di~n Client thuang duQ'c
xem nhu la phich c~m di~n, con Server duQ'c xem nhu la 6 c~m di~n, m(>t
6 c~m co thS c~m vao do OOiSuphich di~n khac nhau cling nhu m(>t
Server co thS ph\lc V\lcho OOiSuClient khac nhau
Trong qua triOOtruySn, nh~n dfr li~u c~n co m(>tmay dong vai tro la
Server va m(>tmay dong vai tro Client, d~u tien Server phai t~o ra m(>t
socket va cha dQ'icac yeu c~u kSt n6i tu Client Client t~o ra socket cho
rieng no xac diOOvi tri Server (d\1a vao ten cua Server hay dia chi cua
Server trong m~ng) va tiSn haOOvi~c kSt n6i vai Server, sau khi kSt n6i
duQ'c thiSt l~p Client va Server co thS tiSn hanh vi~c trao d6i dfr li~u vai
nhau
2.4.2 ThO'vi~n cac ham socket trong C#
Trong C# nguai ta cling xay dt;rng cac lOp vS socket ph\lc V\l cho
vi~c truySn Uli dfr li~u dS dang va nhaOO chong, cac lOp nay duQ'c diOO
nghTatrong kh6ng gian ten System.Net.Sockets.
Trang 22
-PhAn 1 - Chuong 2 : Ngon ngu C# Trang 18
•
2.4.2.1 L6'p TcpListener
LOp mly dung dS l~ng nghe k@t n6i tiI Client
LOp TcpListener cung c~p nhUng phuong thuc don gian dS l~ngnghe va nh~n nhUng yeu cAu k@t n6i vao trong co ch@ d6ng bQ.Chung ta co thS dung mQt TcpClient ho~c mQt Socket dS k@tn6i vaimQt TcpListener
f)S t~o mQt d6i tuqng TcpListener chung ta dung mQtIPEndPoint, mQt dia chi IP C\lCbQ va s6 c6ng ho~c chi cAn co s6c6ng thoi
Dung phuong thuc Start dS b~t dAu l~ng nghe nhUng yeu cAuk@tn6i d@n.Phuong thuc Start se tuAn tv nh~n nhung k@tn6i vaocho d@nkhi gQi phuong thuc Stop ho~c no nh~n s6 luqng k@tn6i lat6i da
Chung ta dung phuong thuc AccepSocket ho~cAcceptTcpClient dS nh~n cac k@tn6i va x@pchung vao hang dqi.Hai phuong thuc nay se ngan ch~n (block) f)S tranh duqc diSu
nay, ta co thS dung phuong thuc Pending truac dS kiSm tra nhUng
yeu cAuk@tn6i d@nco duqc su d\lng trong hang dqi hay khong
Phuong thuc Stop dS dong d6i tuong TcpListener, nhung
phuong thuc nay khong dong b~t ky sv k@tn6i thanh cong nao truac
do Ta phai tv dong cac d6i tuqng nay
Khai bao:
Vi du:
system.Net.Sockets TcpListenerusing System.Net.Sockets;
f)S TcpClient k@tn6i va chuySn d6i du li~u thi TcpListenerho~c Socket phai duqc t~o ra dS l~ng nghe yeu cAu Client k@tn6id@n.Vi~c t~o ra cAun6i nay theo hai cach :
T~o lOp TcpClient va gQi mQt trong ba ham Connect
• public void Connect(IPEndPoint);
• public void Connect(IPAddress, int);
• public void Connect(string, int);
Trang 23Ph~n 1 - Chuang 2 : Ngon ngfr C# Trang 19
Te;tolOp TcpClient dung host name va port clla remote host.Chung ta dung ham GetStream clla lOp TcpClient, ham nay tra
vS mQt d6i tuqng NetworkStream GQi ham Write va Read clla lOpNetworkStream dS gai nh~n dfr li~u Dung ham Close dS giai phongtai nguyen
Khai bao:
Vi du:
system.Net Sockets TcpClientusing System.Net.Sockets;
public TcpC1ient client;
client =new TcpClient(serverName,serverPort );
2.4.2.3 Lo'p NetworkStream
Cung c~p lu6ng dfr li~u trong vi~c truy c~p me;tng
LOp NetworkStream cung c~p nhfrng phuang thuc cho vi~c guinh~n dfr li~u thong qua lu6ng socket LOp NetworkStream ph\lc V\lcho gui nh~n dfr li~u d6ng bQ va b~t d6ng bQ
DS te;tOmQt d6i tUQ'ngNetworkStream ta phai co mQt d6i tUQ'ngsocket dff duQ'c kSt n6i
Vi~c dong d6i tUQ'ng NetworkStream se khong dong socketduQ'c cung c~p NSu mu6n dong Socket luon thi phai chi ro gia tritham s6 Clla socket do
Phuong thuc Write va Read dung dS gui, nh~n dfr li~u qualu6ng d6ng bQ NSu mu6n su d\lng lu6ng rieng bi~t cho vi~c nh~pxu~t thi nen su d\lng cac phuang thuc Begin Write/ EndWrite vaBeginRead/ EndRead
NetworkStream khong h6 trQ' vi~c truy c~p ng~u nhien t6'ilu6ng dfr li~u me;tng.Gia tri thuQc tinh CanSeek chi cho biSt lu6ng
co h6 trQ' vi~c tim kiSm hay khong, thuoc tinh nay thuang tra vSfalse ThuQc tinh Position cho phep l~y gia tri ho~c thiSt l~p vi triClla lu6ng
Trang 24Ph~n 1 - Chuang 2 : Ngon ngfr C# Trang 20
•
2.4.2.4 L6'p StreamReader
Thvc hi~n vi~c dQc kYtv tu mQt dong byte duqc rna hoa
StreamReader duqc thiSt kS cho vi~c nh~p ky tv trong mQt rnahoa C\! thS Trong khi do Lap Stream duqc thiSt kS cho vi~c nh~pxuc1tb~ng byte Dung StreamReader cho vi~c dQc tUng dong thongtin tu t~p tin van bim chu~n
Ma hoa m~c dinh cua StreamReader la UTF-8
GetHashCode cho biSt nhfrng thread duqc quim ly Thai gian
s6ng cua tung thread se khong ph\! thuQc vao nhfrng thread khac
Trang 25Phftn 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 21
"
Phao 2: Xay d\fog chU'O"ogtrioh frog d1}og
?
Ch1fO'ng 1: Tim hien ky thn~t l~p trinh Socket:
1.1 Cae Khai Ni~m CooBan V~ H~ Th6ng M,ng
1.1.1 Mo Hinh M~ng
Truac tien chung ta cftn tim hiSu vc1ndS: t?i sao co S\f phan tftng clla
cac protocol, ich lqi clla vi~c phan tftng
Layer 1
Trong mo hinh ll<lY m6i lap n + 1 Slr d\mg dich V1,1 Clla lap n, ca hai
host A va host B phai co cung ch6ng giao thuc (protocol stack)
£)S co thS chuySn m<)tthong di~p (message) tiI may nay sang may
khac (cac may phai trong cung h~ th<3ngm?ng) no trai qua nhiSu giai
do?n khac nhau, cac giai do?n nay rc1tphuc t?P nhu la: chia nho thong
di~p (message) ra thanh nhiSu goi nho (package), rna hoa cac goi ll<lY ra
d:~mgbit, cac bit nay duQ'c chuySn qua duemg truySn v~t ly d~n may nh~n
Trang 26Ph~n 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 22
Sau do qua trinh nh~n se thvc hi~n nguQ'c l~i nhu ben gai, nSu qua trinh
l~p ghep g~p phili l6i thi phili thong bao dS truySn l~i vv
Cac giai d<;mnmiy r~t phuc t~p doi hoi nguai l~p trinh trng d\lng philihiSu r5 t~t cil cac co chS ho~t dQng ben duai cua h~ th6ng Vi v~y nguai
ta dua ra y tuang phan t~ng, m6i t~ng se chiu trach nhi~m cung c~p dichV\l cho t~ng ben tren va d6ng thai no cling su d\lng dich V\l cua t~ng benduai cung c~p cho no Nhu thS mQt nguai lam vi~c a t~ng nao he) chiquan tam dSn cac t~ng co quan h~ trvc tiSp vai minh
1.1.2 Mo hinh OSI
Host A
Application Presentation Session Layer Transport Layer Network Layer Datalink Layer Physical Layer
I Segments Ipackets
Trang 27Phftn 2 - Chuong 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 23
frame sao cho dung thu t\1',cung cfip kha nang truyen khong 16itren dUOng truyen v~t ly cho cac lOp cao hon vfin de d~t ra 0day la phai xac diOO cO' chS dS xac nh~n mQt frame co truyenthaOOcong hay khong (Acknowladge Framje)
• Network layer
LOp nay dinh hu6ng cho goi dfr li~u (package) di tu may goi dSnmay nh~n Phai giai quySt vfin de diOOtuySn (routing), vfin de diachi (addressing), lUQ11ggia chi phi (accouting), va giai quyStd\lllg dQ (collision)
• Transportlayer
LOp nay co nhi~m V\lchia 006 goi dfr li~u dugc dua xu6ng tu lapben tren thanh nhfrng don vi 006 hon dS truyen qua m~lllg,vai s\1'dam bao la dfr li~u dSn nO'i mQt cach chinh xac LOp nay cungcfip cho cac lap ben tren phuong ti~n dS truyen cac message dQcl~p vai cac lOp ben duai
• Session layer
Session layer dieu khiSn qua triOO giao tiSp gifra hai tiSn trinhtren hai may, t~o va kSt thuc kSt n6i gifra cac qua trinh tren cacmay khac OOau
• Presentation layer
LOp nay cung cfip vi~c triOO bay dfr li~u va dinh d~ng rna Nodam bao dfr li~u dSn tu m~ng co thS su d\lng dugc boi lOp Ungd\lng, va dam bao r&ngthong tin dugc goi boi lOp ung d\lng dugctruyen len m~ng
• Application layer
LOp Ung d\lng cung cfip cac dich V\l m~ng cho ung d\lllg cuanguai dung Vi d\l Ung d\lng xu ly van ban dugc ph\lc V\l boidich V\l truyen t~p tin 0 lOp nay Nhu : FTP (truyen OO~nfile),HTTP, E-mai, v.v
Trang 28Phfrn 2 - Chuang I : Tim hiSu ky thu~t l~p trinh Socket Trang 24
1.1.3 Mo hinhTCP/IP
Chung ta da: khflO sat rno hinh OSI 7 lOp, rno hinh mly chi la rnohinh tharn khao, vi~c ap d\lng rno hinh nay vao th\lc tS la kho co thS th\lchi~n (hi~u su~t kern vi du li~u khi truySn tit may nay sang may kia trongrnl;mgthi phai trai qua t~t ca cac lOp cua rno hinh OSI a ca 2 may), no chi
la tieu chufin dS cac nha phat triSn d\la theo do rna phat triSn cac rno hinhkhac t6i uu han Co r~t nhiSu cac rno hinh khac nhau, hi~n nay rno hinhTCPlIP duQ'c su d\lng ph6 biSn nh~t
Sesstion Transport Network Datalink Physical
Host-to-network
B<}protocol TCP/IP bao gBm~
• TCP (Transmission Control Protocol): day la IO<;ligiao thuc
huang kSt n6i cung c~p kha nang truySn dong du li~u khong 16i,
2 chiSu (full duplex) cho cac qua trinh cho nguai su d\lng
• UDP (User Datagram Protocol): IO<;liprotocol khong thiSt l~p kSt
n6i truac (connectionless) cho cac qua trinh cua user Khonggi6ng nhu TCP, no khong dam bao du li~u khi truySn di co dSnnai chinh xac hay khong
• ICMP (Internet Control Message Protocol): giao thuc xu ly 16i
va di@ukhiSn thong tin giua cac gateway va cac host
Trang 29Ph~n 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 25
• IP (Internet Protocol): IP la giao thuc cung cfip dich V\lphan ph6icac goi (package) cho TCP, UDP va ICMP
• ARP (Address Resolution Protocol): Giao thuc anh Xl;!1 dia chiinternet thanh dia chi ph~n cUng (MAC address)
• RAPR (Address Resolution Protocol): Giao thuc anh Xl;!rnQt diachi ph~n cung thanh dia chi IP.
Mo hinh TCP/IP duQ'cphan ra thanh 4 lap, trong do 2 lap duai (1 va2) clla rno hinh OSI duQ'c gQP ll;!ithanh 1 lap gQi la Host-to-network, 2lap Session va Presentation Clla OSI khong co trong rno hinh giao thuc
TCP/IP.
Tuang tv nhu rno hinh OSI, trong rno hinh TCP/IP, dfr li~u tu rnQtmay cling di tu lap Application xu6ng Transport, rbi xu6ng tiSp lapInternet, sau cung di tai lap Host-to-network, thong qua duemg day V?t lydSn may khac trong rnl;!ng,dfr li~u a day se di nguQ'c tu duai len Clinggi6ng nhu rno hinh OSI, a day gifra cac lap cua 2 may giao tiSp vai nhauthong qua rnQt giao thuc, gifra lap nay vai lap khac trong cung rnQt maygQi la Interface Lap ben duai cung cfip cac dich V\l cho lap tren
Host-to-network
KSt n6i host vai network sao cho chung co thS chuySn cacthong di~p tai cac dia chi dich, lap nay g~n gi6ng vai lap v~t lytrong rno hinh as!.
Internet layer
Day la lap thvc hi~n rnQt h~ th6ng rnl;!ngco kha nang chuySnrnl;!chcac goi dfr li~u dva tren rnQt lap ffil;!ngConnectionless (khongkSt n6i) hay Connection - Oriented (huang kSt n6i) tuy VaG lOl;!idich V\lrna nguai ta dung rnQttrong 2 cach tren
Nhi~rn V\l clla lap nay la dam bao cho cac host chuySn cac goi(package) VaGbfit ky h~ th6ng rnl;!ngnao va chuySn chung dSn dichrna khong ph\l thuQc VaGvi tri Clladich dSn
Trong rno hinh TCP lIP nguai ta dua ra khai ni~rn dia chi IP d@dinh
dia chi cho cac host tren rnl;!ng
Trang 30Phfin 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 26
Transport layer
LOp transport duQ'c thiSt kS dS cho cac phfin tu ngang cftpa lOphost co thS d6i tho~i v6'i nhau
Hai giao thuc chinh la :
• TCP: la mQt Connection Oriented Protocol, cho phep chuySnmQt chu6i byte tu host nay sang host kia rna khong co l6i (dung
co chS phan chia dfr li~u ra thanh cac goi nho (package) a mayngu6n va gom l~iamay dich)
• UDP: la mQt connectionless Protocol duQ'c xay d\ffig cho cac ungd\mg khong mu6n su d\mg cach truySn theo mQt thu t\1'Clla TCPrna mu6n t\1'minh th\1'chi~n diSu do (tuy theo m\lc dich clla ungd\lng rna nguai ta dung UDP hay khong)
Khai niem vS port:
MQt may co thS lien l~c v6'i mQt may khac trong m~ng qua diachi IP Tuy nhien, v6'i dia chi nhu v~y khong dll cho mQt processclla may lien l~c v6'i mQt process Clla may khac Va vi v~yTCP/UDP da:dung s6 nguyen (16 bit) dS d~t ta nen s6 hi~u port.Nhu v~y, dS hai process Clla hai may bftt kY trong m~ng co thS giaotiSp duQ'c v6'i nhau thi m6i frame acftp Network co IP g6m :
• Protocol (TCP/UDP)
• Dia chi IP clla may gai
• S6 hi~u port clla may gai
• Dia chi IP clla may dich
• S6 hi~u port clla process amay dich
Vi d\l: {TCP,127.1 0.1 0.11,6000,127.1 0.1 00.1 0,7000};
Application layer (process layer)
Chua cac dich V\l nhu trong cac lOp Session, Presentaion,Application clla mo hinh OSI, vi d\l: Telnet (Terminel Acesss) cho phepuser tham nh~p vao mQt host a xa va lam vi~c a do nhu dang lam vi~ctren may local (C\lCbQ), FPT (File Transfer Protocol) la cong C\l giupcho chung ta chuySn cac file cho nhau, SMTP (Simple Mail TransferProtocol) cling la mQt d~ng clla FTP nhung no co d~c diSm rieng, DNS(Domain Name Service) dung dS anh x~ ten host thanh dia chi IP vanguQ'c l~i
Trang 31Ph~n 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 27
1.1.4 Giao Thuc TCP va UDP
• Giao thuc TCP
TCP (Transmission Control Protocol): day la lo~i giao thuc gui tunggoi dfr li~u di, noi OO~ntheo giao thuc nay phai co trach OOi~mthong bao
va kiSm tra xem dfr li~u da dSn du hay chua, co 16i hay khong co 16i
Truac khi chuySn dfr li~u bao gia cling co S\f kSt nai gifra may gui va
may nh~n Do phai bao dam dfr li~u duQ'c truySn chiOOxac va luon duytri kSt n6i nen su dVng giao thuc TCP c~n chiSm them mQt s6 tai nguyencua h~ th6ng va cach l~p triOOcho giao thuc nay hoi kho ( phai th\fc hi~n
cac buac kiSm tra dfr li~u theo yeu c~u TCP).
MB hioh k~t oBi theo giao thuc TCP
Server
~.
Client
Create the socket
Create the serversocket
Accept NewConnection
Acquire Streamand ConductConversation
Close Stream andSocket
Exchange data
Acquire Streamand ConductConversation
Close Stream andSocket
Trang 32Phfrn 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 28
• Giao thuc UDP:
UDP (User Datagram Protocol): lo~i giao thuc nay nguQ'c l~i khongdang tin c~y l~m, khong co S\f k~t n6i truac nao gifra nO'igui va nO'inh~n,
dfr li~u gui di m?c dinh r~ng may tinh a dfru nh~n luon a tr~ng thai s~nsang dS ti~p don dfr li~u gui d~n N~u dfr li~u gui d~n bi 16i trong quatrinh truy@nhay khong nh~n duQ'c dfry du giao thuc UDP cling khong cothong tin phfm h6i gi l~i cho nO'i gui Tuy nhien UDP khong doi hoinhi@utai nguyen cua h~ th6ng va cach l~p trinh l~i dan gifm
Mo hlnh k~t nBi theo giao thuc UDP
Receive data
Send data toclient
yes
Close Socket
Hinh 1.5
yesClose Socket
no
Trang 33Phfrn 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 29
TruySn dfr li~u theo giao thuc UDP thuemg dugc dung trong OOfrngung d\lng khong doi hoi S\f chiOOxac cao nhu dich V\l thong bao gia haycac dich V\lgiri OO~ntin
ChiOO vi OOfrngUti diSm do nhfrng OOal~p triOOv~n sir d\lng UDPcho trng d\lng cua hQ, khi do nguai ta dung nhiSu cach dS xac OO~nchogoi dfr li~u di dSn dich chinh xac va trQn vyn
Mot vi du minh hoa co chS xac nhan:
1 Client g6i mQt goi dfr li~u (package) cho Server va cha dgi xacnh~n tu Server
2 Server OO~ndugc goi dfr li~u se tra vS thong di~p phan h6i choClient xac OO~ngoi dfr li~u da nh~n dugc
NSu Client cha dgi han mQt khoang thai gian cho phep (time out)rna khong OO~ndugc phan h6i tu Server thi no cho la goi dfr li~u khong
di dSn dich va truySn hili,nSu sau OOiSulfrn khong nh~n dugc phan h6i tuServer no gia dinh r~ng kSt n6i bi dUt hay Server bi hong hoc
1.1.5 Dla Chi IP
• Gi6'i thieu dia chi IP
Tiit ca cac may trong h~ th6ng m~ng (LAN, WAN, Internet) dSu co
it ooiit 2 dia chi: dia chi v~t ly (Mac Address) va dia chi Internet Dia chiv~t ly con dugc gQi la Ethernet address la mQt day bit g6m 48 bit dugcgan b6i cac nha san xuiit, dia chi nay dugc biSu diSn du6'i d~ng s6 th~pl\lc phan (hecxa)
Class Network
32 bits( 4 byte)Dia chi IP
Host ID
Bang 1.1NSu may tiOOdugc n6i m~ng v6'i Internet thi dia chi IP phai do Nrc(Network Information Center) ciip
Trang 34Phfu1 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 30
Host ID
• Phan Loai Dia Chi IP
Co t~t ca 5 l6p dia chi IP nhung hi~n nay co 3 l6p duQ'c su d\lng
ID bit d~u tien co gia tri 1 Ph~n Network ID co 16 bit (2 byte) va ph~nHost ID co 16 bit nhu v~y s6 dia chi duang ml;lng trong l6p B nay la16.382(214 -2) va s6 dia chi host 65.534(216 -2)
Trang 35Ph~n 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 31
Co thS nh~n biSt dia chi lOp C thong qua 2 bit d~u tien trong ph~nNetwork ID, hai bit nay dugc b~t len 1 Ph~n NetWork ID co2,097,150(221-2) dia chi dUOng m<;mgva ph~n Host ID co 254(28-2) diachi host
Chung ta co thS xem s6 dia chi Host ID va Network ID qua bang:L6'p M~ng
ABC
Bang 1.2
So host tren mQtdia chi man16,777,21465,534254
Vi d\l : dia chi IP:192.125.125.3
Subnet mask :255.255.255.0
1.2 Da nhi~m
Luc ban d~u, l~p trinh vien khong co h~ diSu hanh rna giao tiSp tr\fc tiSpvai may tinh Sao do, l~p trinh vien xu ly t~p tin batch dan gian tren h~ diSuhanh h6 trg th\fc thi nhfrng tiSn trinh dan Ie d cac h~ th6ng Single-tasking,
m<)tkhi tiSn trinh (process) dugc kh6i d<)ngthi no se ch~y hoan t~t truac khi
tiSn trinh khac co thS dugc kh6i d<)ng,vi d\l nhu h~ diSu hanh DOS
DS co thS th\fc thi m<)t chuang trinh tren h~ diSu hanh single-taskingthuOng phai t6n nhiSu thai gian cha dgi cho nhfrng tiSn trinh co thai gian xu
ly Hiunhu I/O, khong phat huy t6i da kha nang CPU (vi phai cha nhUng tiSntrinh I/O)
DS giai quySt v~n dS nguai ta dua ra h~ diSu hanh multitasking
Nhu v~y multitasking duQ'c dinh nghia la vi~c thi himh d6ng thai 2 haynhiSu tiSn trinh tren m<)tCPU
NhiSu tiSn trinh kh6i d<)ngdS ch~y tren m<)tCPU H~ diSu hanh co trachnhi~m chuySn dbi cac tiSn trinh th\fc thi tren CPU Cach thuc h~ diSu hanh
Trang 36Ph~n 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 32
di@u khiSn thi hanh d6ng thai nhi@u tiSn trinh b~ng cach gan cho CPU mQttiSn trinh a mQt thai diSm xac dinh H~ di@u hanh multitasking t~o nen ao giacthi hanh d6ng thai b~ng cach chia thanh nhi@u khe thai gian
Khi co nhi@u tiSn trinh thi hanh cung mQt luc, m6i tiSn trinh duQ'c CPUph\lc V\l trong mQt s6 IUQ'llgkhe thai gian nh~t dinh Nhu v~y thvc sv trongmQt thai diSm CPU chi ph\lc V\l cho mQt tiSn trinh duy nh~t, nhung khoangthai gian chuySn xu ly giua cac tiSn trinh r~t nh6 nen ta co cam giac chungduQ'c thi hanh d6ng thai
Vi d\l:
Tl,T2 la 2 tiSn trinh xu ly d6ng thai
tj la khe thai gian thu i
T2
Bang 1.3
1.3 Da Luang (multithreading)
1.3.1 Khai ni~m luang
Cac chuang trinh truy@n th6ng thvc thi theo mQt kiSu tu~n tv v6'imQt lu6ng (thread) di@u khiSn dan dQc, mQt sv n6i tiSp cac l~nh duQ'cthvc thi bai mQt tiSn trinh, mQt tiSn trinh nhi@u han mQt lu6ng di@u khiSnduQ'c gQi la mQt tiSn trinh da lu6ng (multithreaded processor) MQt thread
la mQt lu6ng di@u khiSn tu~n tv dan trong mQt chuang trinh, no la sv n6itiSp cac l~nh duQ'c thvc thi trong mQt tiSn trinh
M6i thread co mQt diSm thvc thi rieng Ie. Cac thread thuang thamkhilO dSn nhu la cac thread thvc thi (thread execution), bai vi cac threadtrong mQt tiSn trinh la kSt hQ'P nhung l~nh n6i tiSp nhau Trong mQtchuang trinh da lu6ng co thS co nhiSu thread ch~y d6ng thai trong mQtkh6ng gian dia chi, m6i thread co thS duQ'c xem nhu mQt processor ao
Trang 37Ph~n 2 - Chuang 1 : Tim hiSu ky thu~t l~p trinh Socket Trang 33
v6i bQ dSm chuang trinh (process counter), stack va t~p thanh ghi rieng.Cac thread la dan vi cab~mCllasg thgc thi su dVng CPU
M6i thread trong mQt tiSn trinh chC;lYdQc l~p v6i cac thread khac.T~t ca cac thread trong mQt tiSn trinh chia se mQt khong gian dia chichung va co quySn truy xu~t ngang nhau dSn t~t ca cac tai nguyen CllatiSn trinh Vi thread chi a se chung vung khong gian dia chi nen hanhdQng Clla mQt thread co thS anh hUOng dSn nhung thread khac trong mQttiSn trinh
Khai ni~m vS thread va process la tuang tg, mQt process co quySn
sa hfru tai nguyen (thi dV: memory, rna file, ), trong khi cac thread ladan vi co thS ra l~nh lam vi~c H~u hSt cac h~ diSu hanh multithread dinhthai cac thread chC;lytren mQt CPU NhiSu thread khong c~n thiSt chC;lysong song Tren mQt dan xu ly cac thread dugc chia khe thai gian bai h~diSu hanh trong khi tren cac may co nhiSu bQ xu ly cac thread chC;lysongsong tren nhiSu bQ vi xu ly khac nhau
Thread h6 trg l~p trinh d6ng thai va thuang dugc dung cho cac tiSntrinh song song trong mQt trinh tmg dVng Cac tiSn trinh quan trQng dugcthi hanh song song trong mQt tmg dVng Thread dS tC;lohan la cac tiSntrinh, va vi~c chuySn d6i ngu canh cling nhanh han cac tiSn trinh' Vi vi~cduy tri ngu canh Clla thread cling nhy han nhiSu so v6i process, cho nenthread con dugc gQi la LightWeight Processes (LWP)
MQt vi~c r~t quan trQng c~n nh6 la mQt ung dVng v6i r~t nhiSu congvi~c c~n thgc hi~n rna no chi co mQt thread se chC;lych~m han so v6i cacmay co nhiSu bQ xu ly cho dSn khi tmg dVng dugc chi a thanh nhiSuthread dS thgc thi MQt thread trong mQt tiSn trinh co thS chC;lytren b~t ky
bQ xu ly nao va vi thS co kha nang khai thac tinh song song vim co Cllacac may co nhiSu bQ xu ly
1.3.2 Nhfrng ti~n feh khi dung thread
NSu dung thread mQt cach dung d~n thi thread co cac ti~n 19i sau:
• Tang thong lugng va hi~u nang t6t han
Cac chuang trinh Multithreaded co thS thgc thi tren moi truang
Multiprocessor(MP) Trong moi truang Multiprocessor, cacthread nhu la tiSn trinh thgc thi song song tren nhiSu CPU nhuv~y thong lugng va sg thgc thi t6t han Thread co thS khai thackha nang song song v6n co Clla cac may co nhiSu bQ xu ly nhuv~y se rut ng~n thai gian hoan thanh cong vi~c
Trang 38Phfin 2 - Chuang 1 : Tim hi@uky thu~t l~p trinh Socket Trang 34
Con cac may dan xu ly, cac thread dugc cung c~p thong luqngt6t han boi vi CPU co th@xu ly nhiSu thread d6ng thai khi comQt vai thread bi block tren tiSn trinh I/O Vi d\l mQt tiSn trinh co
2 thread thvc thi tren may dan xu ly, khi mQt thread bi blocktrong khi g9i mQt ham h~ th6ng (vi d\l file I/O), thi thread con l~iv~n tiSp t\lC ch~y
• Tang tinh hi~u qua:
H~ th6ng phai t~n d\lng dugc CPU 100% thai gian
• Thai gian dap tmg hgp ly:
CVCti@uhoa thai gian h6i dap cho cac tuang tac cua nguai dung
• Thai gian lUll l~i cua h~ th6ng:
Cvc ti@uhoa thai gian hoan t~t cac tac V\lxu ly theo 10
• Thong luqng t6i da:
Cvc d~i hoa s6 cong vi~c dugc xu ly trong mQt dan vi thai gian
• Tang tinh song song :
Trong mo hinh l~p trinh Client - Server, cac chuang trinh Server
co th@xu~t hi~n nhu mQt thread xu ly d6ng thai cho m6i Client
1.3.3 Cae kh6 khan khi dung thread:
• Phuc t~p
• Kho ki@mtra va b~t 16i
• Kha nang bi Deadlock
• Moi truang Thread khong an toano