270
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHỆ TP HCM GIÁO TRÌNH LẬP TRÌNH MẠNG Lưu hành nội bộ Ths. VĂN THIÊN HOÀNG

Lap Trinh Mang

Embed Size (px)

Citation preview

B GIO DC V O TO

TRNG I HC K THUT CNG NGH TP HCM

GIO TRNH

LP TRNH MNGLu hnh ni b

Ths. VN THIN HONG

Thnh ph H Ch Minh 2009

MC LCM U................................................................................................3 Chng 1 . TNG QUAN V LP TRNH MNG..............................6 Chng 2 . NGN NG LP TRNH JAVA.......................................21 Chng 3 . QUN L CC LUNG VO RA...................................60 Chng 4 . LP TRNH A TUYN...................................................89 Chng 5 . QUN L A CH KT NI MNG VI CC LP INETADDRES, URL V URLCONNECTION.................................104 Chng 6 . LP TRNH SOCKET CHO THC TCP........................119 Chng 7 . LP TRNH NG DNG CHO GIAO THC UDP.......142 Chng 8 . TUN T HA I TNG V NG DNG TRONG LP TRNH MNG............................................................................ 166 Chng 9 . PHN TN I TNG TRONG JAVA BNG RMI. 179 TI LIU THAM KHO...................................................................195

- ii -

M UHin nay, mng my tnh l cng ngh ca ca thi i. Cc ng dng mng ng vai tr khng th thiu khai thc tim nng ca mng my tnh, t bit l mng Internet. Do vy, lp trnh mng l mn hc khng th thiu ca sinh vin ngnh cng ngh thng tin ni chung v sinh vin chuyn ngnh mng ni ring. Mc ch ca mn hc lp trnh mng l cung cp cho sinh vin bit kin thc mng lin quan cng nh c ch hot ng v kin trc ca cc phn mm mng. T , sinh vin hiu v bit cch vit cc chng trnh ng dng trong mt h thng mng quy m nh cng nh mng Internet. Java l ngn ng lp trnh hng i tng thun ty vi nhiu c trng u vit so vi cc ngn ng lp trnh hng i tng khc nh tnh c lp vi nn, tnh bo mt, Java cung cp b th vin h tr lp trnh mng n gin v rt hiu qu. Gio trnh ny c thit k cung cp cho sinh vin nhng kin c bn bit pht trin nhng ng dng theo m hnh khch/ch da vo TCP/IP Socket. ng thi, mt s kin thc h tr lp trnh phn tn cng c trang b. Gio trnh bao gm 10 chng: Chng 1: Gii thiu vai tr ca chng trnh mng, nhng khi nim cn bn v mng my tnh, cng nh kin thc lin quan ngi c c th tip cn vi cc chng tip theo. Chng 2: Gii thiu ngn ng lp trnh Java. Trnh by cc thnh phn c bn, cc th vin h tr c sn v cc c ch x l ngoi l. Sinh vin mi tip cn cng nh hc ngn ng lp trnh Java c th hc v n tp c th hiu v vit cc ng dng Java c bn. Chng 3: Cc lung vo ra. Chng ny gii thiu khi nim vo ra bng cc lung d liu. Trc tin ta s tm hiu v cc lung v ngha ca lung trong chng trnh Java. Tip n chng ta s ln lt tm hiu cc lung vo ra chun trong gi lm vic vi console. Cc lung tru tng java.io.InputStream, java.io.OutputStream l cc lung c bn t xy dng nn cc lung c th. Lung c chia thnh cc nhm nh lung byte v lung k t. T phin bn Java 1.4 mt c trng vo ra mi trong Java c a vo cng c gii thiu

-3-

trong chng ny. Vic nm vng kin thc chng ny cng gip cho vic lp trnh ng dng mng tr nn n gin hn v thc cht ca vic truyn v nhn d liu gia cc ng dng mng l vic c v ghi cc lung. Chng 4: Lp trnh a tuyn on. Trong cc ngn ng lp trnh trc y cc ng dng hu ht l cc ng dng n tuyn on. tng tc x l v gii quyt vn tng tranh ca cc ng dng ni chung v ng dng mng ni ring ta cn s dng khi nim a tuyn on. Phn u ca chng ny trnh by cc khi nim cn bn v tin trnh, tuyn on. Tip n chng ta s xem xt cc cch ci t mt ng dng tuyn on trong Java bng lp Thread v thc thi giao tip Runnable. Sau ta s i vo tm hiu cc phng thc ca lp Thread. S ng b ha v cch ci t mt chng trnh ng b ha cng c gii thiu trong chng ny. Chng 5: Lp trnh mng vi cc lp InetAddress, URL v URLConnection. Lp InetAddress l lp cn bn u tin trong lp trnh mng m ta cn tm hiu. N ch ra cch mt chng trnh Java tng tc vi h thng tn min. Tip n ta s i vo tm hiu cc khi nim v URI, URL,URN v lp biu din URL trong Java. Cch s dng URL ti v thng tin v tp tin t cc server. Sau ta i vo tm hiu lp URLConnection, lp ny ng vai tr nh mt ng c cho lp URL. Chng 6: Lp trnh Socket cho giao thc TCP. Trong chng ny chng ta s tm hiu cch lp trnh cho m hnh client/server v cc kiu kin trc client/server. Cc lp Socket v ServerSocket c trnh by chi tit trong chng ny lp cc chng trnh cho giao thc TCP. Chng 7: Lp trnh ng dng cho giao thc UDP. Chng ny gii thiu giao thc UDP v cc c trng ca giao thc ny. Tip n ta i vo tm hiu cc lp DatagramPacket v DatagramSocket vit cc chng trnh ng dng mng cho giao thc UDP. Chng 8: Tun t ha i tng v ng dng trong lp trnh mng. Trnh by cc vn v tun t ha v ng dng ca tun t ha trong lp trnh mng.

-4-

Chng 9: Phn tn i tng bng Java RMI. Chng ny tm hiu ch v lp trnh phn tn i tng bng k thut gi phng thc RMI (Remote Method Invocation).

-5-

CHNG 1 . TNG QUAN V LP TRNH MNG

Chng ny trnh by cc vn , cc khi nim c bn lin quan n lp trnh mng bng ngn ng Java bao gm: chc nng ca mt chng trnh mng, cc nh ngha v mng, m hnh phn tng TCP/IP, m hnh OSI, cc giao thc IP, TCP, UDP, m hnh khch /ch (Client/Server), Socket v mt s vn lin quan Internet khc.

1.1

Chc nng ca mt chng trnh mng

Cc chng trnh mng cho php ngi s dng khai thc thng tin c lu tr trn cc my tnh trong h thng mng (t bit cc chng trnh chy trn mng Internet vi hng triu my vi tnh c nh v khp ni trn th gii.), trao i thng tin gia cc my tnh trong h thng mng, cho php huy ng nhiu my tnh cng thc hin gii quyt mt bi ton hoc gim st hot ng mng. V d nh cc chng trnh cho php truy xut d liu. Cc chng trnh ny cho php my khch (client) truy xut d liu lu trn my ch (server) v nh dng d liu v trnh by ngi s dng. Cc chng trnh ny s dng cc giao thc chun nh HTTP (gi d liu Web), FTP (gi/nhn tp tin), SMTP (gi mail) hoc thit k nhng giao thc mi phc v cho vic truy xut d liu. Cc chng trnh ny hot ng theo m hnh Client/Server. Hoc chng trnh cho php ngi dng tng tc vi nhau nh Game online, Chat, ...

1.2

Mng my tnh

Mng my tnh l tp hp cc my tnh hoc cc thit b c ni vi nhau bi cc ng truyn vt l v theo mt kin trc no . Mng my tnh c th phn loi theo qui m nh sau: Mng LAN (Local Area Network)-mng cc b: kt ni cc nt trn mt phm vi gii hn. Phm vi ny c th l mt cng ty, hay mt ta nh. Mng WAN (Wide Area Network): nhiu mng LAN kt ni vi nhau to thnh mng WAN.

-6-

MAN (Metropolitan Area Network), tng t nh WAN, n cng kt ni nhiu mng LAN. Tuy nhin, mt mng MAN c phm vi l mt thnh ph hay mt th nh. MAN s dng cc mng tc cao kt ni cc mng LAN ca trng hc, chnh ph, cng ty, ..., bng cch s dng cc lin kt nhanh ti tng im nh cp quang.

Trong mt h thng mng, mng xng sng (Backbone) ng vai tr quan trng. Mng Backbone l mt mng tc cao kt ni cc mng c tc thp hn. Mt cng ty s dng mng Backbone kt ni cc mng LAN c tc thp hn. Mng Backbone Internet c xy dng bi cc mng tc cao kt ni cc mng tc cao. Nh cung cp Internet hoc kt ni trc tip vi mng backbone Internet, hoc mt nh cung cp ln hn.

1.3

M hnh phn tng Hot ng gi d liu i trong mt mng t my trm n my ch l ht sc phc

tp c mc vt l ln logic. Cc nhiu vn t ra nh vn bin i tn hiu s sang tn hiu tng t, trnh xung t gia cc gi tin (phn bit cc gi tin), pht hin v kim tra li gi tin, nh tuyn gi tin i ti ch, ... Nhm qun l c hot ng ny, cc hot ng giao tip mng lin quan c phn tch vo cc tng, hnh thnh m hnh phn tng. C hai dng m hnh phn tng ph bin: OSI, TCP/IP.

1.3.1 M hnh OSIM OSI trnh by by tng rt thnh cng v n hin ang c s dng nh l mt m hnh tham chiu m t cc giao thc mng khc nhau v chc nng ca chng. Cc tng ca m hnh OSI phn chia cc nhim v c bn m cc giao thc mng phi thc hin, v m t cc ng dng mng c th truyn tin nh th no. Mi tng c mt mc ch c th v c kt ni vi cc tng ngay di v trn n. Tng ng dng (Application): nh ngha mt giao din lp trnh giao tip vi mng cho cc ng dng ngi dng, bao gm cc ng dng s dng cc tin ch mng. Cc ng dng ny c th thc hin cc tc v nh truyn tp tin, in n, email, duyt web,

-7-

My B My Ang dng Cc giao thc giao tip gia cc my Trnh by Phin Vn chuyn Mng Lin kt Vt l Nt Mng Lin kt Vt l Nt Mng Lin kt Vt l Trnh by Phin Vn chuyn Mng Lin kt Vt l ng dng

Sub-net access protocols

Sub-net

Vng cc giao tip din ra trong cc Subnet

Tng trnh din (Presentation): c trch nhim m ha/gii m), nn/gii nn d liu t tng ng dng truyn i trn mng v ngc li.

Tng phin (Session): to ra mt lin kt o gia cc ng dng. V d cc giao thc FTP, HTTP, SMTP, ...

Tng giao vn (Transport): cho php truyn d liu vi tin cy cao chng hng gi tin gi i phi c xc thc hay c thng ip truyn li nu d liu b hng hay b tht lc, hay d liu b trng lp.

Tng mng (Network): cho php truy xut ti cc nt trong mng bng cch s dng a ch logic c s dng kt ni ti cc nt khc. Cc a ch MAC ca tng 2 ch c th c s dng trong mt mng LAN, nn a ch IP c s dng nh a ch ca tng 3 khi truy xut ti cc nt trong mng WAN. Cc router tng 3 c s dng nh ng i trong mng.

Tng lin kt d liu (Data Link): truy xut ti mt mng vt l bng cc a ch vt l. a ch MAC l a ch ca tng 2. Cc nt trn LAN gi thng ip cho nhau bng cch s dng cc a ch IP, v cc a ch ny phi c chuyn i

-8-

sang cc a MAC tng ng. Giao thc phn gii a ch (ARP: Address Resolution Protocol) chuyn i a ch IP thnh a ch MAC. Mt vng nh cache lu tr cc a ch MAC tng tc x l ny, v c th kim tra bng tin ch arp -a, Cui cng, tng vt l (Physical): bao gm mi trng vt l nh cc yu cu v cp ni, cc thit b kt ni, cc c t giao tip, hub v cc repeater,...

1.3.2 M hnh TCP/IPM hnh ISO phc tp nn t c s dng nhiu trong thc t. M hnh TCP/IP n gin v thch hp c s dng cho mng Internet. M hnh ny gm c bn tng. Tng ng dng: cc phn mm ng dng mng nh trnh duyt Web (IE, Firefox, ..), game online, chat, ... s dng cc giao thc nh HTTP (web), SMTP, POP, IMAP (email), FTP, FSP, TFTP (chuyn ti tp tin), NFS (truy cp tp tin), ... Tng vn chuyn: m bo vn chuyn gi tin tin cy bng cch s dng giao thc TCP hoc UDP. Tng Internet: cho php nh tuyn gi gi tin ti ch trn mng bng cch s dng giao thc IP. Tng Host to Network: vn chuyn d liu thng qua thit b vt l nh dy cp quang n tn Host to Network ca h thng xa.Tng ng dng Tng vn chuyn Tng Internet Tng ng dng Tng vn chuyn Tng Internet

Tng Host to Network ng dn vt l

-9-

1.4

Cc giao thc mng Cc giao thc biu din khun dng thng tin d liu ti mi mc giao tip trong

mng. Giao thc thng c phn loi theo mc p dng ti mi tng trong cc m hnh mng. Trong mi loi giao thc c phn loi da vo s phn tng, giao thc li c phn loi da vo chc nng. V d giao thc tng phin trong m hnh OSI, gm HTTP (web), SMTP, POP, IMAP (email), FTP, FSP, TFTP (chuyn ti tp tin), NFS (truy cp tp tin), ...

1.4.1 TCP-Transmission Control ProtocolGiao thc TCP c s dng tng vn chuyn (OSI) m bo cho d liu gi i tin cy v xc thc gia cc nt mng. Giao thc TCP phn chia d liu thnh cc gi tin gi l datagram. TCP gn thm trng header vo datagram. Trng head c m t trong hnh v bn di.Source port Sequence Number Acknowledge Number Offset Reserved Checksum Options Start of Data Flags Window Urgent pointer Padding Destination port

Bng 1-1 Minh ha cu ca thng tin header ca TCP

Trng Cng ngun (source port) Cng ch (destination port) S th t (Sequence Number) S hiu cng ca ngun S hiu cng ch

M t

S th t c to ra bi ngun v c s dng bi ch sp xp li cc gi tin to ra thng ip ban u, v gi xc thc ti ngun. Cho bit d liu c nhn thnh cng. Cc chi tit v ni d liu gi tin bt u D phng ch ra rng gi tin cui cng hoc gi khn cp ch ra kch thc ca vng m nhn. Pha nhn c th thng bo cho pha gi kch thc d liu ti a m c th c gi i bng cch s dng cc thng ip xc thc

Acknowledge Number Data offset Reserved Flags Window

- 10 -

Checksum Urgent Pointer Options Padding

xc nh xem gi tin c b hng khng thng bo cho pha nhn bit c d liu khn vng d phng cho vic thit lp trong tng lai ch ra rng d liu kt thc trong vng 32 bit.

1.4.2 UDP-User Datagram ProtocolGiao thc UDP ny c s dng tng giao vn (OSI) thc hin c ch khng lin kt. N khng cung cp dch v tin cy nh TCP. UDP s dng IP pht tn cc gi tin ny. Nhc im ca UDP l: Cc thng ip c th c nhn theo bt k th t no. Thng ip c gi u tin c th c nhn sau cng. Khng c g m bo l cc gi tin s n ch, v cc thng ip c th b tht lc, hoc thm ch c th nhn c hai bn sao ca cng mt thng ip. u im ca UDP l: UDP mt giao thc c tc truyn tin nhanh v n ch xc nh c ch ti thiu truyn d liu. C th trong cch thc truyn tin unicast, broadcast v multicast. Mt thng ip unicast c gi t nt ny ti nt khc. Kiu truyn tin l truyn tin im-im. Giao thc TCP ch h tr truyn tin unicast. Truyn tin broadcast ngha l mt thng ip c th c gi ti tt c cc nt trong mt mng. Multicast cho php cc thng ip c truyn ti mt nhm cc nt c la chn. UDP c th c s dng cho truyn tin unicast nu cn ti tc truyn tin nhanh, nh truyn tin a phng tin, nhng u im chnh ca UDP l truyn tin broadcast v truyn tin multicast. V nu dng giao thc TCP th tt c cc nt gi v cc xc thc cho server s lm cho server qu ti.Bng 1-2 Cu trc trng Header ca UDP

Trng thng tin Source port (Cng ngun)

M t Xc nh cng ngun l mt ty chn vi UDP. Nu trng ny c s dng, pha nhn thng ip c th gi mt phc p ti cng ny S hiu cng ch

Destination Port

- 11 -

Length Checksum

Chiu di ca thng ip bao gm header v d liu kim tra tnh ng n

S hiu cng

Cc s hiu cng ca TCP v UDP c phn thnh ba loi - Cc s hiu cng h thng - Cc s hiu cng ngi dng - Cc s hiu cng ring v ng Cc s hiu cng h thng nm trong khong t 0 n 1023. Cc cng h thng ch c s dng bi cc tin trnh c quyn u tin ca h thng. Cc giao thc ni ting c cc s hiu cng nm trong khong ny. Cc s hiu cng ngi dng nm trong khong t 1024 n 49151. Cc ng dng server ca bn s nhn mt trong cc s ny lm cng, hoc bn c th ng k s hiu cng vi IANA .

Hnh 1-1 Minh ha lnh netsta xem thng tin cc cng ang s dng

Cc cng ng nm trong khong t 49152 n 65535. Khi khng cn thit phi bit s hiu cng trc khi khi ng mt ng dng, mt s hiu cng trong khong ny s l thch hp. Cc ng dng client kt ni ti server c th s dng mt cng nh vy.

- 12 -

Nu chng ta s dng tin ch netstat vi ty chn a, chng ta s thy mt danh sch tt c cc cng hin ang c s dng, n cng ch ra trng thi ca lin kt-n ang nm trong trng thi lng nghe hay lin kt c thit lp.

1.4.3 IP-Internet ProtocolGiao thc IP c thit k nh tuyn truyn gi tin trong mng t nt ngun ti nt ch. Mi nt c nh danh bi mt a ch IP (32 bit). Khi nhn gi d liu tng trn (nh theo khun dng TCP hoc UDP), giao thc IP s thm vo trng header cha thng tin ca nt ch.Version IHL Identification Time to Live Protocol TCP Header Start of Data TOS Flags Total length Fragmentation Offset Header Checksum

Bng 1-3 Thng tin chi tit ca cu trc header ca giao thc IP

Trng Version (Phin bn IP) IP Header Length (Chiu di Chiu di ca header. Header) Type of Service (Kiu dch v)

M t Phin bn IP. ( Phin bn giao thc hin nay l IPv4)

Kiu dch v cho php mt thng ip c t ch thng lng cao hay bnh thng, thi gian tr l bnh thng hay lu, tin cy bnh thng hay cao. iu ny c li cho cc gi c gi i trn mng. Mt s kiu mng s dng thng tin ny xc nh u tin Hai byte xc nh tng chiu di ca thng ip-header v d liu. Kch thc ti a ca mt gi tin IP l 65,535, nhng iu ny l khng thc t i vi cc mng hin nay. Kch thc ln nht c chp nhn bi cc host l 576 bytes. Cc thng ip ln c th phn thnh cc on-qu trnh ny c gi l qu trnh phn on Nu thng ip c phn on, trng nh danh tr gip cho vic lp rp cc on thnh mt thng ip. Nu mt thng ip c phn thnh nhiu on, tt c cc on ca mt thng ip c cng mt s nh danh. Cc c ny ch ra rng thng ip c c phn on hay khng, v liu gi tin hin thi c phi l on cui cng ca thng ip hay khng. 13 bit ny xc nh offset ca mt thng ip. Cc on c th n theo mt th t khc vi khi gi, v vy trng offset l cn thit

Total Length (Tng chiu di)

Identification (nh danh)

Flags

Fragment Offset

- 13 -

xy dng li d liu ban u. on u tin ca mt thng ip c offset l 0 Time to Live Protocol Header Checksum Source Address Destination Address Options Padding Xc nh s giy m mt thng ip tn ti trc khi n b loi b. Byte ny ch ra giao thc c s dng mc tip theo cho thng ip ny. Cc s giao thc y l ch l checksum ca header. Bi v header thay i vi tng thng ip m n chuyn ti, checksum cng thay i. Cho bit a ch IP 32 bit ca pha gi a ch IP 32 bit ca pha nhn

a ch IP IPv4-32 bit c dng nh danh mi nt trn mng TCP/IP. Thng thng mt

a ch IP c biu din bi bn phn x.x.x.x, chng hn 192.168.0.1 . Mi phn l mt s c gi tr t 0 n 255. Mt a ch IP gm hai phn: phn mng v phn host.Bng 1-4 Minh ha phn loi a ch lp mng

Lp A (0) B (10) C (110)

Byte 1 Networks (1-126) Networks (128-191) Networks (192-223)

Byte 2 Host (0-255) Networks (0-255) Networks (0-255)

Byte 3 Host (0-255) Host (0-255) Networks (0-255)

Byte 4 Host (0-255) Host (0-255) Host (0-255)

Trong a ch lp D(1110) c s dng cho a ch multicast. a ch d phng (01111111). a ch 127.0.0.1 l a ch ca localhost, v a ch 127.0.0.0 l a ch loopback. trnh cn kit cc a ch IP, cc host khng c kt ni trc tip vi Internet c th s dng mt a ch trong cc khong a ch ring. Cc a ch IP ring khng duy nht v tng th, m ch duy nht v mt cc b trong phm vi mng . Tt c cc lp mng d tr cc khong nht nh s dng nh l cc a ch ring cho cc host khng cn truy cp trc tip ti Internet. Cc host nh vy vn c th truy cp Internet thng qua mt gateway m khng cn chuyn tip cc a ch IP ring.Lp A 10 Khong a ch ring

- 14 -

B C

172.16-172.31 192.168.0-192.168.255

IPv6 c s dng 128 bit biu din a ch nhm biu din nhiu hn s a ch ca nt trn mng.Lp Cu trc a ch IP 0| netid| hostid 1|0| netid| hostid 1|1|0| netid| hostid 1|1|1|0| a ch multicast 1|1|1|1 Format S bit mng/s bit host 7/24 14/16 Tng s mng/lp 27-2=126 2142=16382 2222=4194302 Tng s host/mng 2242=17.777.214 216-2=65.643 28-2=245 Vng a ch IP

A B C D

N.H.H.H N.N.H.H

1.0.0.1126.0.0.0 128.1.0.0191.254.0.0 192.0.1.0223.255.254.0 224.0.0.0239.255.255.255 240.0.0.0254.255.255.255 127.x.x.x

N.N.N.H 22/8 -

E Loopback

-

-

-

-

Cc subnet Vic kt ni hai nt ca hai mng khc nhau cn c mt router. nh danh host ca

mng lp A cn c 24 bit; trong khi mng lp C, ch c 8 bit. cp pht a ch IP cho cc mng khc nhau mt cch hiu qu v d qun l, mt k thut c c s dng gi l subnet. Subnet s vay mn mt s bit ca hostid lm subnet mask(mt n mng). - Subnet mask c tt c cc bit network v subnet u bng 1, cc bit host u bng 0 - Tt c cc my trn cng mt mng phi c cng mt subnet mask - phn bit c cc subnet (mng con) khc nhau, b nh tuyn dng php logic AND V d: a ch lp mng lp B 128.10.0.0 c th dng 8 bit u tin ca hostid subnet: Subnet mask = 255.255.255.0Network 11111111 Network 11111111 Subnet 11111111 Host 00000000

- 15 -

255

255

255

0

Nh vy, s bit dnh cho subnet s l 8 -> c tt c 28-2=254 subnet (mng con). a ch ca cc subnet ln lt l 128.10.0.1, 128.10.0.2, 128.10.0.3, ..., 128.10.0.245. 8 bit dnh cho host nn mi subnet s c 28-2=254 host, a ch ca cc host ln lt l 128.10.xxx.1, 128.10.xxx.2, 128.10.xxx.3, ..., 128.10.xxx.254

1.5

M hnh khch/ch (client/server) Hu ht cc chng trnh mng hin ny s dng theo m hnh client/server. Mt

chng trnh chy my ch-server mnh, qun l mt lng d liu ln. Mt chng trnh chy my khch-client (my tnh c nhn) thc hin khai thc d liu my ch. Trong hu ht trng hp, my ch gi d liu, my khch nhn d liu. Thng thng, client s thit lp cuc giao tip, v server s i yu cu thit lp t client v giao tip vi n.

1.6

Socket Socket l biu din tru tng ha mt c ch kt ni gia hai ng dng trn hai

my bng cch s dng kt hp a ch IP v s hiu cng. N cho php cc ng dng gi v nhn d liu cho nhau. C client v server u s dng socket giao tip vi nhau. Trong ngn ng Java, mt socket c biu din bng mt i tng ca mt trong cc lp java.net nh Socket, ServerSocket, DatagramSocket hoc MulticastSocket.

1.7

Dch v tn min a ch IP c vit di dng 4 nhm con s nn ngi s dng rt kh nh. V

vy h thng tn min c s dng h tr cho ngi s dng. Cc my tnh chuyn dng lu tr v phn gii tn min bng cch lu danh sch a ch IP v tn min c gi l My ch DNS. V d www.microsoft.com, www.bbc.co.uk. Cc tn ny khng bt buc phi c ba phn, nhng vic c bt u t phi sang tri, tn bt u vi min mc cao. Cc min mc cao l cc tn nc c th hoc tn cc t chc v c nh ngha bi t chc IANA. Cc tn min cp cao c lit k trong bng sau. Trong nhng nm gn y, mt s tn min cp cao mi c a vo.

- 16 -

Bng 1-5 Mt s tn min cao cp

Tn min .aero .biz .com .coop .info .museum .name Doanh nghip Cc t chc thng mi Cc quan h hp tc

M t Cng nghip hng khng

Khng rng buc v s dng Cc vin bo tng Cc tn c nhnBng 1-6 Mt s tn min cao cp khc

Tn min .net .org .pro .gov .edu .mil .int Cc mng

M t Cc t chc phi chnh ph Cc chuyn gia Chnh ph Hoa K Cc t chc gio dc Qun i M Cc t chc c thnh lp bi cc hip c quc t gia cc chnh ph.Bng 1-7 Tn min quc gia

Tn min .at .de .fr .uk .vn Autralia Germany France United Kingdom Vietnam

M t

1.7.1 Cc server tn minCc hostname c phn gii bng cch s dng cc server DNS (Domain Name Service). Cc server ny c mt c s d liu cc hostname v cc b danh nh x cc tn thnh a ch IP. Ngoi ra, cc DNS cng ng k thng tin cho cc Mail Server, cc s ISDN, cc tn hm th, v cc dch v.

- 17 -

Trong Windows, chnh cc thit lp TCP/IP xc nh server DNS c s dng truy vn. Lnh ipconfig/all ch ra cc server DNS c thit lp v cc thit lp cu hnh khc. Khi kt ni vi mt h thng xa s dng hostname, trc tin server DNS c truy vn tm a ch IP. Trc tin, DNS kim tra trong b c s d liu ca ring n v b nh cache. Nu tht bi trong vic phn gii tn, server DNS truy vn server DNS gc.

1.7.2 NslookupDch v tn min (Domain Name Service) L tp hp nhiu my tnh c lin kt vi nhau v phn b rng trn mng Internet. Cc my tnh ny c gi l name server. Chng cung cp cho ngi dng tn, a ch IP ca bt k my tnh no ni vo mng Internet hoc tm ra nhng name server c kh nng cung cp thng tin ny.

Hnh 1-2 Minh ha dng lnh nslookup tm a ch IP

C ch truy tm a ch IP thng qua dch v DNS Gi s trnh duyt cn tm tp tin hay trang Web ca mt my ch no , khi c ch truy tm a ch s din ra nh sau: 1. Trnh duyt yu cu h iu hnh trn client chuyn hostname thnh a ch IP. 2. Client truy tm xem hostname c c nh x trong tp tin localhost, hosts hay khng? a. Nu c client chuyn i hostname thnh a ch IP v gi v cho trnh duyt. b. Nu khng client s tm cch lin lc vi my ch DNS.

- 18 -

3. Nu tm thy a ch IP ca hostname my ch DNS s gi a ch IP cho client. 4. Client gi a ch IP cho trnh duyt. 5. Trnh duyt s dng a ch IP lin lc vi Server. 6. Qu trnh kt ni thnh cng. My ch gi thng tin cho client.

1.8

Cc vn lin quan Internet

1.8.1 Intranet v ExtranetMt intranet c th s dng cc cng ngh TCP/IP tng t nh vi Internet. S khc bit l intranet l mt mng ring, trong tt c mi ngi u bit nhau. Intranet khng phc v cho vic truy xut chung, v mt s d liu cn phi c bo v khi nhng truy xut t bn ngoi. Mt extranet l mt mng ring ging nh intranet nhng cc extranet kt ni nhiu Intranet thuc cng mt cng ty hoc cc cng ty i tc thng qua Internet bng cch s dng mt tunnel. Vic to ra mt mng ring o trn Internet tit kim chi ph nhiu cho cng ty so vi vic thu ring mt ng truyn thit lp mng.

1.8.2 FirewallC nhng k ph hoi trn mng Internet!. ngn chn chng, ngi ta thng thit lp cc im truy cp ti mt mng cc b v kim tra tt c cc lung truyn tin vo v ra khi im truy nhp . Phn cng v phn mm gia mng Internet v mng cc b, kim tra tt c d liu vo v ra, c gi l firewall. Firewall n gin nht l mt b lc gi tin kim tra tng gi tin vo v ra khi mng, v s dng mt tp hp cc quy tc kim tra xem lung truyn tin c c php vo ra khi mng hay khng. K thut lc gi tin thng da trn cc a ch mng v cc s hiu cng.

1.8.3 Proxy ServerKhi nim proxy c lin quan n firewall. Mt firewall ngn chn cc host trn mng lin kt trc tip vi th gii bn ngoi. Mt my b ngn kt ni vi th gii bn ngoi bi mt firewall s yu cu truy xut ti mt trang web t mt proxy server cc b, thay v yu cu mt trang web trc tip t web server xa. Proxy server sau s yu cu trang web t mt web server, v sau chuyn kt qu tr li cho bn yu cu ban u.

- 19 -

Cc proxies cng c s dng cho FTP v cc dch v khc. Mt trong nhng u im bo mt ca vic s dng proxy server l cc host bn ngoi ch nhn thy proxy server. Chng khng bit c cc tn v cc a ch IP ca cc my bn trong, v vy kh c th t nhp vo cc h thng bn trong. Trong khi cc firewall hot ng tng giao vn v tng internet, cc proxy server hot ng tng ng dng. Mt proxy server c nhng hiu bit chi tit v mt s giao thc mc ng dng, nh HTTP v FTP. Cc gi tin i qua proxy server c th c kim tra m bo rng chng cha cc d liu thch hp cho kiu gi tin. V d, cc gi tin FTP cha cc d liu ca dch v telnet s b loi b. V tt c cc truy nhp ti Internet c chuyn hng thng qua proxy server, v th vic truy xut c th c kim sot cht ch. V d, mt cng ty c th chn gii php phong ta vic truy xut ti www.playboy.com nhng cho php truy xut ti www.microsoft.com

1.91. OSI. 2.

Bi tp Tm hiu cc giao thc chun ha ph bin khc cc tng khc nhau ca m hnh Tm hiu cc giao thc c s dng ph bin trong cc ng dng trn mng

Internet. Cho bit s hiu cng ca cc ng dng ny. Lit k cc ng dng thc t s dng giao thc ny. Lit k cc phn mm ngun m ang pht trin s dng cc giao thc ny.

- 20 -

CHNG 2 . NGN NG LP TRNH JAVA

2.1

Gii thiu Ngn ng lp trnh Java c pht trin b Sun Microsystems vo nm 1991 nh

mt phn ca d n xanh. Mt thnh vin ca d n l Jame Gosling khng nh gi cao ngn ng lp trnh C++ v a ra mt ngn ng mi t tn l Oak. Sau , Sun i tn li l Java. Java c chnh thc cng b nm 1995 v ngay lp tc to ln mt tro lu mi trn ton th gii v t n nay vn to c sc cun ht mnh m. Java l ngn ng lp trnh thun hng i tng v n cung cp nhng c trng mnh m cho lp trnh mng (lp trnh Internet). u im ca ngn ng lp trnh java th hin qua kin trc v b th vin rt ln.

2.2

Mi trng lp trnh Java vit mt ng dng java v chy c, mi trng lp trnh yu cu cn c b

cng c JDK. B cng c ny c th download ti website ca Sum (java.sun.com). B cng c ny cha trnh bin dch, trnh thng dch, trnh g ri v tt c th vin c sn h tr cho lp trnh. Trong , c 2 tp tin chnh ca vic lp trnh java l javac.exe l trnh bin dch tp tin *.java thnh m trung gian *.class. java.exe l trnh thng dch (thnh phn my o) thng dch chy tp tin *.classChng trnh (*.java) javac.exe : compiler Dng c ch Just-InJava Bytecode (file.class) JVM (java.exe) platform OS Hardware Time thng dch bytecode thnh lnh my c th

- 21 -

son tho cu lnh, mt trnh son tho vn bn bt k u c th s dng nh Notepad, Notepad++, Editplus, Jcreator hoc s dng mi trng tch hp IDE nh NetBean.

2.3

Mt s v d m u

V d 1: To chng trnh Java cho php nhp mt dng k t t i dng lnh v hin th xu k t ln trn mn hnh:class { public static void main(String[] args) { System.out.println(args[0]); } } Hello

Bin dch chng trnhC:\>javac Hello.java

Thc hin chng trnhC:\>java Hello "Chao ngon ngu lap trinh Java"

Kt qu in ra l:Chao ngon ngu lap trinh Java

V d 2: To mt applet hin th mt xu k t ln mn hnhimport java.applet.*; import java.awt.*; public class { public void paint(Graphics g) { g.drawString("Hello applet",30,30); } } HelloApplet extends Applet

Bin dch appletC:\>javac HelloApplet.java

To mt trang VDApplet.html nhng applet

- 22 -

Thc thi applet bng cch m tp tin VDApplet.html trong trnh duyt. Kt qu c th hin hnh di y:

Hnh 2-3 Minh ha chy chng trnh applet

- 23 -

2.4

Cc thnh phn c bn ca ngn ng lp trnh Java

2.4.1 nh danhnh danh (Identifier) Tn gi ca cc thnh phn trong chng trnh c gi l nh danh. nh danh thng c s dng xc nh bin, kiu, phng thc, lp. Qui tc cho nh danh: nh danh l mt dy cc k t gm cc ch ci, ch s v cc k t khc: _, $,... nh danh khng bt u bng ch s. di ca nh danh khng gii hn. Java phn bit ch hoa v ch thng.

Qui c t tn nh danh cho cc lp: ch ci u ca mi t trong nh danh u vit hoa

V d: MyClass, HocSinh, SocketServer, URLConnection,... nh danh cho cc bin, phng thc, i tng: ch ci u ca mi t trong nh danh u vit hoa tr t u tin. V d: hoTen (h tn), namSinh (nm sinh), tinhTong (tnh tng).

2.4.2 Cc kiu d liu nguyn thy (primitive datatype)Kiu d liu c bn nh ngha sn c gi l kiu nguyn thy. Bin thuc kiu d liu nguyn thy lu gi tr. Kiu nguyn thy bao gm cc kiu: Kiu nguyn: char (2byte), byte(1byte), short(2byte), int(4byte), long(8byte). Kiu s thc: float(4byte), double(8byte). Kiu logic: bool. Mi kiu d liu nguyn thy c mt lp bao bc(wrapper class) cung cp cc chc nng thao tc trn kiu d liu ny.Kiu d liu char byte Char Byte Lp gi

- 24 -

short int long float double

Short Integer Long Float Double

2.4.3 Khai bo cc binC php: ; v d:int i; i=5; URL u ; HocSinh hs = new HocSinh(Tuan Anh);

Mi bin c khai bo vi mt kiu xc nh. C hai kiu bin. Bin kiu thuc d liu nguyn thy s lu gi tr. Bin thuc kim i tng s lu a ch tham chiu ti i tng (a ch i tng, a ch nh ngha lp i tng). Cn ch rng mt bin khi c khai bo, cn phi thit lp gi tr ca n trc khi s dng. Qui tc chuyn i kiu trong Java()

V dfloat f = (float)100.15D;

M rng v thu hp kiubyte short int char long float double

V d m rng kiuchar c = A; int k = c;

V d thu hp kiu

- 25 -

int k =10; char c=(char)k;

2.4.4 Cc cu lnh c bn Khi lnh

Khi lnh trong Java tng t nh khi lnh trong C/C++, l nhng lnh nm trong cp ngoc m { v ng }. Mt khi lnh l mt dy khng hoc nhiu lnh hoc cc khai bo bin hoc khai bo lp theo bt k th t no c t trong cp ngoc {}{ S1; Sn; }

Lnh gn

int a, b, c,d; d=b*b-4*a*c;

Biu thc iu kin

Biu thc iu kin A?B:C tr v gi tr B nu A c gi tr true, tr v gi tr C nu A c gi tr false. V d:byte b; int i=b>=0?b:b+255;

- Trong v d trn thc hin vic chuyn i cc s nguyn kiu byte c du v s nguyn kiu int khng c du. Nu b ln hn hoc bng 0 th I nhn gi tr l b, ngc li I s nhn gi tr l 255+b. - Cc lnh iu khin r nhnh chng trnh C phpif

Lnh if n gin

Lnh if else

- 26 -

C phpif ; else ;

V d: Vit chng trnh nhp vo mt dy s nguyn t i dng lnh, sp xp dy s v hin th dy s sau khi sp xp ln mn hnh.class SapXep { public static void main(String[] args) { int a[]=null; int i,j,tg; if(args.length>0) { a=new int[args.length]; } for(i=0;ijava Point3C

Kt qu chng trnhToa do ban dau: x=3.0, y=4.5 x=2.0, y=5.0 z=5.0 z=4.0 Toa do sau khi tinh tien:

2.5.7 Truyn tham s trong JavaThng thng, trong mt ngn ng lp trnh thng c hai cch truyn tham bin cho mt th tc: truyn theo tham tr v truyn theo tham chiu. Cc gi tr ca cc bin tham s trong mt phng thc l cc bn sao ca cc gi tr do ngi gi xc nh. S khc bit l truyn tham tr th tham s lu gi tr thuc kiu d liu nguyn thy cn truyn tham chiu th tham s lu gi tr l a ch nh ca i tng thuc mt kiu nht nh.

2.5.8 a hnhTnh a hnh ca mt i tng c th hin qua k thut np chng phng thc(overloaded method). Cc phng thc np chng l cc phng thc nm trong cng mt lp c cng tn nhng khc nhau v danh sch tham s. V dclass TinhToan { public static void main(String[] args) { Tinh c = new Tinh(); c.add(10,20); c.add(40.0f,35.65f); c.add("Good ","Morning");

- 36 -

} } class Tinh { public void add(int a, int b) { int c = a+b; System.out.println("Phep cong hai so nguyen :"+c); } public void add(float a, float b) { float c = a+b; System.out.println("Phep cong hai so dau phay dong :"+c) ; } public void add(String a, String b) { String c = a+b; System.out.println("Phep cong hai xau :"+c); } };

Kt qu:C:\MyJava\Baitap>java TinhToan Phep cong hai so nguyen :30 Phep cong hai so dau phay dong :75.65 Phep cong hai xau :Good Morning

Gii thch: Trong chng trnh trn phng thc add() l phng thc c np chng. C ba phng thc c cng tn add() nhng c cc tham s khc nhau. Khi phng thc add c gi, da vo danh sch tham s truyn vo, phng thc tng ng s c triu gi ra thc hin.

- 37 -

2.5.9 Thnh phn tnhCc thnh phn tnh l thnh phn c lp ca lp. Thnh phn ny c th truy cp qua tn. Mi i tng trong lp u c th truy cp n cc thnh phn ny. Cc thnh phn tnh bao gm: bin tnh, phng thc tnh, khi tnh. V d v bin staticclass StaticVariable { static int count=0; StaticVariable(){ count++; } public static void main(String[] args) { //bien dem count se cho biet so doi tuong duoc tao ra StaticVariable c1=new StaticVariable(); System.out.println("Bien dem count="+count); StaticVariable c2=new StaticVariable(); System.out.println("Bien dem count="+count); StaticVariable c3=new StaticVariable(); System.out.println("Bien dem count="+count); } }

Phng thc tnh ch s dng cc thuc tnh hoc phng thc ca lp chnh n th cc thuc tnh, phng phc ny phi l tnh. V d phng thc staticclass StaticMethodDemo { static String name="Phuong thuc tinh"; public static void main(){ System.out.println("Hello" + name); } public static void main(String[] args) { main(); System.out.println("Hello World!");

- 38 -

} }

Khi static c s dng khi to gi tr ca cc bin tnh. Khi lp ln u tin c ti vo b nh, cc khi static lun c x l trc. V d khi tnhclass StaticDemo { static{ System.out.println("Khoi static 1"); } public static void main(String[] args) { System.out.println("Hello World!"); } static { System.out.println("Khoi static 2"); } }

V khi static lun c x l trc nn kt qu in ra ca chng trnh trn s l:Khoi static 1 Hello World! Khoi static 2

2.5.10 Cc thnh phn hng (final)Bin c khai bo vi t kha final c ngha l bin c gi tr hng, khng thay i c ni dung. V d.final double PI=3.1416;

Cc phng thc c khai bo l final khng th c vit lp tha k. V dclass A { final void method(){

- 39 -

} } class B extends A{ final void method(){ } } //li

Lp khai bo vi t kha final khng th c tha k. V dfinal class A { }

2.6

Lp tru tng Lp tru tng l lp c t nht mt phng thc tru tng. Phng thc tru

tng l phng thc ch khai bo khun dng hm m khng th ci t chi tit hm. C php khai bo phng thc tru tng:[phm vi] abstract ([ds tham so]);

C php khai bo lp tru tng:abstract class { //c t nht mt phng thc tru tng }

V d:abstract class { double a,b,r; public abstract double dientich(); public abstract double chuvi(); } class HinhTron extends Hinh2D { public HinhTron(double r) { this.r=r; } Hinh2D

- 40 -

public double dientich() { return Math.PI*r*r; } public double chuvi() { return Math.PI*2*r; } } class HinhChuNhat extends Hinh2D { public HinhChuNhat(double a,double b) { this.a=a; this.b=b; } public double dientich() { return a*b; } public double chuvi() { return (a+b)*2; } } class AbstractDemo { public static void main(String args[]) { Hinh2D ht=new HinhTron(1); System.out.println("Dien tich hinh tron ban kinh 1.0 la:"+ht.dientich()); System.out.println("Chu vi hinh tron ban kinh 1.0 la:"+ht.chuvi()); Hinh2D hcn=new HinhChuNhat(3,4);

- 41 -

System.out.println("Dien tich hinh chu nhat la:"+hcn.dientich()); System.out.println("Chu vi hinh chu nhat la "+hcn.chuvi()); } };

Kt qu thc hin chng trnhC:\MyJava>java AbstractDemo Dien tich hinh tron ban kinh 1.0 la:3.141592653589793 Chu vi hinh tron ban kinh 1.0 la:6.283185307179586 Dien tich hinh chu nhat la:12.0 Chu vi hinh chu nhat la 14.0

2.7

Giao din (Interface) Giao din l s tru tng ha cao , ngha l mt lp i tng ch bao gm tp

hp cc phng thc tru tng hoc thuc tnh hng. Giao din c s dng trong c ch lin kt mun. Giao din cho php a tha k. C php khai bo giao dinpublic interface [extends ] { //Thn giao din }

V d nh ngha mt giao din:public interface CalculatorInterface { public double add(double x, double y); public double sub(double x, double y); public double mul(double x, double y); public double div(double x, double y); }

Ci t giao din

- 42 -

Giao din trnh by cc phng thc chung ca cc lp i tng ci t n. Lp i tng ci t giao din c c php nh sau.class implements { //Ci t cc phng thc ca giao din }

V d:class CalculatorTest implements CalculatorInterface { public double add(double x, double y) { return x+y; } public double sub(double x, double y) { return x-y; } public double mul(double x, double y) { return x*y; } public double div(double x, double y) {return x/y; } public static void main(String[] args) throws Exception { CalculatorInterface cal=new CalculatorTest(); if(args.length!=2) { System.out.println("Cach chay chuong trinh: java CalculatorImpl so1 so2"); return; } else

- 43 -

{ double x,y,z; x=Double.parseDouble(args[0]); y=Double.parseDouble(args[1]); System.out.println(x+"+"+y+"="+cal.add(x,y)); System.out.println(x+"-"+y+"="+cal.sub(x,y)); System.out.println(x+"*"+y+"="+cal.mul(x,y)); System.out.println(x+"/"+y+"="+cal.div(x,y)); } } }

Kt qu thc hin chng trnh lC:\MyJava>java CalculatorTest 12 3 12.0+3.0=15.0 12.0-3.0=9.0 12.0*3.0=36.0 12.0/3.0=4.0

2.8

Gi (Package) Cc gi gm c cc thnh phn l cc lp, cc giao din v cc gi con c lin quan

vi nhau. Vic t chc thnh cc gi c mt s li ch sau: - Cho php nhm cc thnh phn cng c trng, chc nng thnh mt n v, thun tin cho vic qun l. - Trnh xung t tn. - Cho php qui nh phm vi truy cp cc thnh phn m mc gi. C php truy cp ti thnh phn ca gi . C php np cc thnh phn trong gi vo trong mt chng trnh.import .*;//tn gi

C php khai bo np cc thnh phn trong gi con nh sau:import ..*;

Cch to ra cc gi trong Java C php khai bo a mt lp i tng vo mt gi

- 44 -

package ;

V d:package mypackage; public class { public double cong(double a,double b) { return a+b; } public double nhan(double a, double b) { return a*b; } public double tru(double a,double b) { return a-b; } public double { return a/b; } } chia(double a,double b) throws Exception Calculator

Bin dchC:\>javac -d C:\MyJava Calculator.java

Lu : cc thnh phn ca gi cn c khai bo vi thuc tnh public, nu cn truy xut chng t bn ngoi.

2.9

Qun l ngoi l (Exception Handling) Khi lp mt chng trnh thng c cc li xy ra. Trong , li trong qu trnh

thc thi chng trnh l mt loi li nghim trng lm cho chng trnh khng hot ng bnh thng hoc ngng hot ng. Cc li ny l do chng trnh khng kim sot ht cc tnh hung d liu u vo khc nhau, v d nh tn tp tin cung cp khng tm thy, a ch mng khng hp l, vt kch thc mng, ...)

- 45 -

Ngn ng lp trnh Java h tr c ch kim tra li cht ch. C th cc lp biu din li nh Throwable, Error, Exception, Cc thnh phn trong th vin c sn ca Java u c ci t kim tra li v a ra lp biu din li ph hp. Ngoi ra, Java cn cho php to ra cc lp i tng c kim tra li v pht sinh ra i tng li tng ng.

2.9.1 Lnh kim sot ngoi l c bnMt lnh kim sot ngoi l c bn gm 2 khi lnh chnh l khicatch. try

v khi l ni

Khi try l ni cha on lnh c kh nng gy ra li run-time. Khitry

catch

cha on lnh x l li do khi

pht hin. Mt lnh kim sot ngoi l c duy nht

mt khi try v c th c nhiu khi catch. Ngoi ra cn khi ty chn l nhreturn, finally,

l ni cha cc lnh lun c thc thi dcatch

c pht sinh exception hay khng. Nu trong khi th lnh trong khifinally

c lnh thot khi phng thc,

vn c thc thi bnh thng. Cc lnh ny

thng l nhng lnh "dn dp" b nh, ng cc stream, C php tng qut:try { // Cc cu lnh c kh nng gy ra exception } catch (Exception1 E1) { // Cc cu lnh x l cho exception thuc loi Exception1 } catch (Exception2 E2) { // Cc cu lnh x l cho exception thuc loi Exception2 } ... ... finally { // Cc cu lnh lun c thc thi

- 46 -

}

V d c th: Trong v d ny, ta s c tnh pht sinh ra mt ngoi l, l li chia cho 0. Li ny ch c pht hin lc run-time.public class Main01 { public static void main(String[] args) { int x=4,y=0; try { int z=x/y; // Cu lnh ny s khng c thc thi System.out.println("Hello!"); } catch(Exception E) { System.out.println("Co loi run-time!"); } } }

V kt qu khi chy chng trnh:Co loi run-time! Press any key to continue...

Nu khng x l exception, ta s c kt qu nh sau:Exception in thread "main" java.lang.ArithmeticException: / by zero at Main01.main(Main01.java:8) Press any key to continue...

l exception do Java t pht hin v x l. V d trn cho thy rng khi mt cu lnh pht sinh exception, cc cu lnh sau n trong khi try s khng c thc thi. Khi , con tr lnh s nhy ngay n khi ph hp (nu c) thc thi cc lnh trong .catch

- 47 -

2.9.2 T chc lp biu din ngoi lTrong Java, cc ngoi l c biu din lp cao nht l Throwable. K than l

hai lp con Exception v Error. Tt c cc lp biu din ngoi l trong Java u

k tha t hai lp ny. Mt i tng phi c dn xut t Throwable mi dng c trong cu lnhthrow

pht sinh ngoi l. Lp Exception dng m t chung cho tt c ngoi l trong Java, Trong ,

RuntimeException

l mt dn xut quan trng. T n, cc ngoi l nh li vt phm vi

mng, li tnh ton s hc, li p kiu, li s dng i tng cha khi to, c ci t. Lp Error dng m t cc chung cho cc loi ngoi l c bit, khng cn x l, v d nh li ca my o, li lin kt class, Throwable

Error

Exception

LinkageError

VirtualMachineError

...

RuntimeException

IOException

...

ClassCastException

NullPointerException

ArithmeticException

...

S t chc exception ca Java

- 48 -

2.9.3 Pht sinh ngoi lCc li nu c pht sinh s c bt bi my o Java v nm ra mt i tng ngoi l cha thng tin li. Ngn ng lp trnh Java cho php ngi lp trnh nm ra i tng ngoi l bng t kha throw.public class Main02 { public static void main(String[] args) { Object o=null; if (o==null) // Pht sinh exception loi NullPointerException throw new NullPointerException(); } }

Trong , NullPointerException l mt exception c sn ca Java. Khi chy chng trnh, ta s nhn c thng bo sau:Exception in thread "main" java.lang.NullPointerException at Main02.main(Main02.java:8)

exception c r ngha, ta c th throw mt exception vi hm khi to c tham s l chui m t loi li, sau dng phng thc getMessage() xut cu thng bo ra mn hnh.public class Main02 { public static void main(String[] args) { try { String S="Loi: object co gia tri null"; // To ra exception bng constructor c tham s throw new NullPointerException(S); } catch (NullPointerException E) {

- 49 -

System.out.println(E.getMessage()); } } }

Khi , cu thng bo li s tr nn thn thin hn:Loi: object co gia tri null Press any key to continue...

Trong mt phng thc c nm ra ngoi l th phng thc phi c khai bo nm ngoi l bng t kha throws. v d:// T kha throws cho bit phng thc ny c pht sinh exception // cho khi cao hn x l void methodD(int[]a)throws NullPointerException { if (a == null) // Pht sinh exception throw new NullPointerException("Loi: Mang null"); // ... }

Khi , nu phng thc methodC() gi methodD() m khng t n trong khi exception th cng phi c t kha throws trong phn khai bo. Khi exception ca phng thcmethodC()

phi cng loi hoc l lp cha ca exception do methodD() pht sinh.

void methodC()throws NullPointerException // Hoc throws Exception,... { int[]a=null; // ... methodD(a); // ... }

V d bt nhiu ngoi lScanner sn=new Scanner(System.in);

- 50 -

System.out.print("Nhap gia tri n (0, 1, 2, ...): "); int n=sn.nextInt(); try { switch (n) { case 0 : break; // Khng pht sinh exception case 1 : throw new NullPointerException(); case 2 : throw new ClassCastException(); case 3 : throw new ArrayIndexOutOfBoundsException(); default: // Pht sinh exception IllegalArgumentException // Lu : khng c khi catch ring cho exception ny, // vic catch n s do khi cach Exception thc hin throw new IllegalArgumentException(); } } catch (NullPointerException E) { System.out.println("Loi doi tuong null!"); // return s ngn cn vic thc thi khi lnh ngoi finally, // nhng khng ngn cn vic thc thi khi lnh finally return; } catch (ClassCastException E) { System.out.println("Loi ep kieu!"); } catch (ArrayIndexOutOfBoundsException E) { System.out.println("Loi chi so mang vuot pham vi!"); } catch (Exception E) {

- 51 -

System.out.println("Co loi!"); } finally { // Khi lnh ny lun c thc thi System.out.println("Khoi lenh finally."); } //Lnh ny c khi c thc thi, c khi khng, ty vo cch x l // ca cc khi catch trn System.out.println("Lenh ngoai khoi finally.");

Khi c thc thi, ty vo gi tr ca n m on code trn s pht sinh exception tng ng. Khi ch ch c khi catch ph hp nht c thc thi. Nhp n = 0: khng pht sinh exception nn khng thc thi khi catch no, vn thc thi khi finally v lnh ngoi khi finally.Nhap gia tri n (0, 1, 2, ...): 0 Khoi lenh finally. Lenh ngoai khoi finally. Press any key to continue...

Nhp n = 1: pht sinh NullPointerException, khi exception ny cha lnhreturn

catch

tng ng vifinally

thot ngay khi phng thc nn lnh ngoi khi

khng c thc thi, tuy nhin lnh trong khi finally vn c thc thi bnh thng.Nhap gia tri n (0, 1, 2, ...): 1 Loi doi tuong null! Khoi lenh finally. Press any key to continue...

Nhp n = 2: pht sinh ClassCastException, khi catch tng ng vi exception ny khng thot khi phng thc nn lnh ngoi khifinally

vn c thc thi, v d

nhin lnh trong khi finally vn c thc thi bnh thng.Nhap gia tri n (0, 1, 2, ...): 2 Loi ep kieu! Khoi lenh finally. Lenh ngoai khoi finally.

- 52 -

Press any key to continue...

Mi loi exception s ng vi mt i tng exception trong Java. Nu ta "catch" mt exception th ta "catch" lun cc exception k tha t n. Nn cn lu rng Java khng cho php ta "catch" exception "cha" trc khi "catch" exception "con", v nh vy th khi lnh catch ca exception "con" s khng bao gi c thc thi. Trong khi catch cui cng, ta bt li vi loi li l Exception. Do mi exception thng thng trong Java u k tha t class Exception nn khi c t sau cng (nu c). D nhin l nu mun catch mi loi exception trong Java, ta c thThrowable:catch catch

ny c kh nng ca n phi

bt gn nh mi loi exception ca Java. Do , nh ni trn, khi

catch

vi loi li l

catch (Throwable T) { System.out.println("Co loi trong Java!"); }

2.9.4 S lan truyn ngoi lKhi mt exception c pht sinh, n s lan truyn dn t ni pht sinh ra cc cp cao hn cho ti khi c catch hoc ti phng thc main(). Khi exception truyn timain()

m vn khng c catch, n s c thng bo cho ngi dng.

Xem v d sau:public class Main04 { public static void main(String[] args) { methodA(null); } static void methodA(int[] a) { methodB(a); }

- 53 -

static void methodB(int[] b) { System.out.println(b[0]); } }

V kt qu khi chy v d trn:Exception in thread "main" java.lang.NullPointerException at Main04.methodB(Main04.java:13) at Main04.methodA(Main04.java:9) at Main04.main(Main04.java:5) Press any key to continue...

Da vo thng bo, ta c th thy exception NullPointerException c pht sinh t methodB(), sau c lan truyn v methodA() v sau cng l main().

2.9.5 Cc phng thc chnh ca lp ExceptionCc phng thc di y u k tha t Throwable.Exception() Exception(String msg) String getMessage() void printStackTrace() Throwable fillInStackTrace() StackTraceElement[] getStackTrace()

Khi to mt Exception mc nh, cu thng bo s l null. Khi to mt Exception vi cu thng bo msg Ly cu thng bo ca Exception. In ra stack lan truyn ca Exception. Ghi thng tin ca Exception vo stack lan truyn, sau tr v chnh Exception this Ly ra mng cha cc StackTraceElement, miStackTraceElement

l mt i tng cha thng

tin v Exception c lan truyn (gm dng, file, lp, phng thc gy li).

V d:public static void main(String[] args) { StackTraceElement[]ste=null; try { methodA();

- 54 -

} catch (Exception E) { // In ra cu thong bao loi System.out.println("Co loi: "+E.getMessage()); // Ly ra stack lu thng tin v s lan truyn // exception ste=E.getStackTrace(); } for(int i=0; ste!=null && i