1. Trang chủ
  2. » Công Nghệ Thông Tin

Lap trinh mang

78 257 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập trình mạng
Trường học Học Viện Công Nghệ Thông Tin
Chuyên ngành Lập Trình Mạng
Thể loại bài giảng
Năm xuất bản 2009
Thành phố Hải Phòng
Định dạng
Số trang 78
Dung lượng 621,89 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- 17 - C:\MyJava\Baitap>java ThrowDemo -1 ArraySizeException: Nhap kich thuoc mang khong hop le Gi i thích: NegativeArraySizeException... try catch finally demo Khong the chia 0!. Ví d :

Trang 2

- 2 -

M C L C

Ch ng 1: CÁC KHÁI NI M C N B N V M NG VÀ JAVA

I CÁC KHÁI NI M C N B N V M NG

II L CH S PHÁT TRI N C A JAVA

ch đ n thu n là m t ngôn ng l p trình mà nó là gi i pháp cho nhi u v n đ

III C U TRÚC C A MÁY O JAVA

IV CÁC C TR NG C A NGÔN NG L P TRÌNH JAVA

V CÁC N B N JAVA

VII CÁC KI U NG D NG TRONG JAVA

Ch ng 2 NGÔN NG L P TRÌNH JAVA

I NH DANH, KI U D LI U VÀ KHAI BÁO BI N

II C U TRÚC L NH TRONG JAVA

III QU N LÝ NGO I L

IV CÁC L P VÀ CÁC I T NG TRONG JAVA

V CÁC LU NG VÀO RA

VI L P TRÌNH TUY N O N TRONG JAVA

Ch ng 3 L P TRÌNH M NG B NG JAVA

I X LÝ A CH IP

II CÁC L P URL VÀ URLConnection

III L P TRÌNH SOCKET

VI L P TRÌNH APPLET

V L P TRÌNH C S D LI U

VI L P TRÌNH SOCKET TIÊN TI N

TÀI LI U THAM KH O CHÍNH

Trang 3

Ki n trúc m ng c p t i hai khía c nh là Hình tr ng m ng và Giao th c m ng

Hình tr ng m ng: Là cách n i các máy tính v i nhau Ng i ta phân lo i m ng theo hình tr ng m ng

nh m ng sao, m ng bus, m ng ring…

Giao th c m ng: Là t p h p các qui t c qui c truy n thông c a m ng mà t t c các th c th tham gia truy n thông ph i tuân theo

Giao th c TCP/IP

IP (Internet Protocol)-Giao th c cung c p kh n ng k t n i các m ng con thành liên m ng

TCP Là giao th c h ng liên k t (connection oriented) b t bu c ph i có giai đo n thi t l p và gi i phóng liên k t

Host Máy tính đ c k t n i v i Internet đ c g i là host

a ch IP: M i host đ c đ nh danh duy nh t trên m ng và đ nh danh này đ c g i là đ a ch Internet hay đ a ch IP

Ví d Máy tính có hostname là www.microsoft.com có đ a ch IP là 207.46.230.219

Máy ch DNS

Ti n thân c a m ng Internet là m ng Arpanet c a B qu c phòng M Th i k đó s máy tính m c

đ đ li t kê chúng trong m t t p tin v n b n và l u trên t ng máy k t n i vào m ng Thông tin trong

t p tin này bao g m đ a ch IP và hostname Tuy nhiên do quy mô c a m ng ngày càng m r ng

ng i ta c n có các máy tính chuyên d ng đ l u tr và phân gi i tên mi n Các máy tính có ch c

n ng nh v y đ c g i là Máy ch DNS

D ch v tên mi n (Domain Name Service) Là t p h p nhi u máy tính đ c liên k t v i nhau và phân

b r ng trên m ng Internet Các máy tính này đ c g i là name server Chúng cung c p cho ng i dùng tên, đ a ch IP c a b t k máy tính nào n i vào m ng Internet ho c tìm ra nh ng name server có

kh n ng cung c p thông tin này

C ch truy tìm đ a ch IP thông qua d ch v DNS

Gi s trình duy t c n tìm t p tin hay trang Web c a m t máy ch nào đó, khi đó c ch truy tìm đ a

ch s di n ra nh sau:

1 Trình duy t yêu c u h đi u hành trên client chuy n hostname thành đ a ch IP

2 Client truy tìm xem hostname có đ c ánh x trong t p tin localhost, hosts hay không?

-N u có client chuy n đ i hostname thành đ a ch IP và g i v cho trình duy t

-N u không client s tìm cách liên l c v i máy ch DNS

3 N u tìm th y đ a ch IP c a hostname máy ch DNS s g i đ a ch IP cho client

4 Client g i đ a ch IP cho trình duy t

5 Trình duy t s d ng đ a ch IP đ liên l c v i Server

6 Quá trình k t n i thành công Máy ch g i thông tin cho client

Trang 4

- 4 -

C ng (Port)

Khi k t n i vào máy ch ta có th yêu c u nhi u d ch v khác nhau M i d ch v đ u có cách g i và

nh n d li u theo qui c riêng TCP/UDP ch ch u trách nhi m g i d li u t máy tính này t i máy tính khác Vi c g i d li u cho d ch v nào thì thông qua c ng (port)

M i máy tính v i m t đ a ch IP có 65535 c ng M i c ng đ c dành cho m t d ch v đ c bi t Ch ng

h n d ch v Web đ c ch y trên c ng 80

Socket

Socket là m t ph ng pháp đ thi t l p k t n i truy n thông gi a m t ch ng trình yêu c u d ch v

và m t ch ng trình cung c p d ch v trên m ng LAN, WAN, hay Internet và đôi khi là gi a các ti n trình trong cùng m t máy tính Thông tin c a m t Socket bao g m đ a ch IP và s hi u c ng

URL (Uniform Resource Locator) là m t con tr ch t i m t tài nguyên c th trên Internet v trí xác

đ nh

Cú pháp c a URL: protocol://hostname [:80]/path/filename#section

Ví d : http://www.sun.com/index.html

II L CH S PHÁT TRI N C A JAVA

L ch s phát tri n c a Java b t đ u n m 1991 khi SUN ti n hành các d án l p trình cho vi x lý dùng trong các thi t b đi n t khác nhau C++

không đáp ng đ c các yêu c u này vì C++

ch tính kh chuy n v mã ngu n nh ng sau khi biên d ch l i hoàn toàn ph thu c vào t ng b vi x lý c th Vi

x lý dùng trong các thi t b đi n t r t đa d ng và có vòng đ i khá ng n ng i Vi c thay đ i b x lý

d n đ n c n ph i thay đ i trình biên d ch C++

, đi u này gây lên t n kém SUN đã thi t k m t ngôn

ng l p trình m i có tính kh chuy n cao h n đó chính là Java Java là tên đ a ph ng n i xu t x

c a m t lo i cà phê ngon n i ti ng

Java đ c chính th c công b n m 1995 và ngay l p t c đã t o lên m t trào l u m i trên toàn th gi i và t đó đ n nay v n t o đ c s c cu n hút m nh m B i vì Java không ch đ n thu n

là m t ngôn ng l p trình mà nó là gi i pháp cho nhi u v n đ

III C U TRÚC C A MÁY O JAVA

Ch ng trình ng d ng ho t đ ng b ng cách s d ng các đ i t ng c a Java (Java Object) Máy o Java t o thành m t l p ng n cách gi a trình ng d ng và h đi u hành

C u trúc c a máy o Java (Java Virtual Machine)

Máy o Java bao g m các thành ph n sau : Trình n p l p (Class Loader), Trình ki m tra l p (Class Verifier), và Trình th c thi (Execution Unit)

Trình n p l p: đ c bytecode t đ a ho c t k t n i m ng

Trình ki m tra l p: (Class Verifier) Ki m tra các l p s không sinh ra các l i nh h ng t i h th ng khi th c thi

Trình th c thi s th c hi n các l nh đ c quy đ nh trong t ng bytecode

IV CÁC C TR NG C A NGÔN NG L P TRÌNH JAVA

Java là m t môi tr ng đ c l p (Independent Platform)

Do c u trúc c a Java nên ta có th so n th o ch ng trình trên b t k h th ng nào Sau khi đã đ c biên d ch thành t p tin l p (*.class) ng d ng có th th c thi b t k h th ng nào ó là đ c tính mà các ngôn ng khác không có

Java là m t ngôn ng l p trình h ng đ i t ng

Java là m t ngôn ng l p trình h ng đ i t ng thu n túy, m i th trong Java đ u là đ i t ng

Trang 5

- 5 -

Java là m t ngôn ng kh chuy n (Portibility)

Java có tính kh chuy n đ i v i c mã ngu n và b n thân mã biên d ch (bytecode)

Java là môi tr ng x lý phân tán

Bytecode không ph thu c vào h th ng vì v y bytecode có th n m phân tán trên m ng Vi c liên k t

v i th vi n ch đ c th c hi n vào lúc ch y ch ng trình do v y mã byte th ng g n nh Ch ng trình Java đ c n p d n m t cách linh ho t nên không gây quá t i cho m ng Ngoài ra, Java còn cho phép x lý đa tuy n đo n C ch truy n thông đi p thu n ti n cho vi c t ch c m ng

Java là môi tr ng an toàn

Khi phát tri n các ng d ng phân tán thì m t trong nh ng v n đ đ c quan tâm hàng đ u là an toàn

h th ng Java đ c thi t k đ đ m b o an toàn cho ng i dùng Java trên m ng Java có b n t ng

b o an:

T ng 1: M c ngôn ng và trình biên d ch Java không có ki u con tr Trình biên d ch ki m tra ki u r t

ch t ch M i chuy n đ i ki u đ u ph i đ c th c hi n m t cách t ng minh Trình biên d ch Java t

ch i sinh ra mã byte n u mã ngu n không tuân th nghiêm ng t các quy t c an toàn

T ng 2: Trình n p l p (Class Loader) Có kh n ng phân bi t nh ng l p đ n t m ng và nh ng l p

n p t h th ng Nh kh n ng phân bi t nh v y l p đ c n p qua m ng đ c kh ng ch ch t ch , không đ c phép th c hi n các thao tác m c th p

T ng 3: Trình ki m tra mã byte Trình này s ki m tra mã byte vào lúc ch y ch ng trình b o đ m

ch ng trình Java đã đ c biên d ch m t cách đúng đ n Khi th c hi n s không gây l i nh h ng

t i h th ng c ng nh không đ ng ch m t i d li u riêng t trên máy khách

T ng 4: Trình b o an Ki m tra mã byte vào lúc ch y nh m b o đ m mã đang xét không vi ph m qui

t c an toàn đã đ c thi t l p Các thao tác c a ng d ng đ c li t vào kh n ng gây nguy hi m nh

đ c, xóa t p đ u ph i đ c Trình b o an cho phép

Java cung c p cho ng i l p trình m t th vi n kh ng l

Java cung c p cho ng i l p trình m t th vi n kh ng l các hàm chu n, g i là core API Các hàm chu n này đ c đ t trong các gói

Java đã lo i b gánh n ng này cho ng i l p trình Các vùng nh đ c t đ ng gi i phóng n u nh

nó không tham chi u đ n b t k đ i t ng nào đang ho t đ ng

Chi phí phát tri n ng d ng b ng Java th p

Khi phát tri n ng d ng d a trên công ngh Java thì s có r t nhi u công c phát tri n và d ch v

đ c cung c p mi n phí

V CÁC N B N JAVA

J2SE ( Java 2 Platform, Second Edition)

ây là n b n chu n, bao g m m t môi tr ng th i gian ch y và m t t p h p các API đ xây d ng

m t lo t các ng d ng khác nhau t applet, cho t i các ng d ng đ c l p ch y trên các n n khác nhau, ng d ng cho client cho các ng d ng doanh nghi p khác nhau

J2EE (Java 2 Platform, Enterprise Edition (J2EE)

J2EE là n n t ng đ xây d ng các ng d ng phía server

J2ME (Java 2 Platform, Micro Edition )

Trang 6

- 6 -

n b n này cho phép xây d ng các ng d ng Java cho các “vi thi t b ” (các thi t b có màn hình hi n

th và h tr b nh t i thi u, nh đi n tho i di đ ngm và các thi t b tr giúp cá nhân)

VI CÔNG C JAVA

Sun cung c p m t s ti n ích cho phép biên d ch b t l i và t o tài li u cho m t ng d ng Java JDK bao g m:

Javac: B biên d ch đ chuy n mã ngu n thành bytecode

Java: B thông d ch đ th c thi các ng d ng Java tr c ti p t t p tin l p

Apppletviewer: Th c thi Java Applet t tài li u html

VII CÁC KI U NG D NG TRONG JAVA

Trang 7

Qui t c cho đ nh danh:

• nh danh là m t dãy các ký t g m các ch cái, ch s và các ký t khác: ‘_’, $,

• nh danh không b t đ u b ng ch s

• dài c a đ nh danh không gi i h n

• Java phân bi t ch hoa và ch th ng

Qui c đ t tên

• nh danh cho các l p: ch cái đ u c a m i t trong đ nh danh đ u vi t hoa

Ví d : MyClass, HocSinh, SocketServer, URLConnection,

• nh danh cho các bi n, ph ng th c, đ i t ng: ch cái đ u c a m i t trong đ nh danh đ u vi t hoa tr t đ u tiên

Ví d : hoTen (h tên), namSinh (n m sinh), tinhTong (tính t ng)

Trang 8

• Các bi n tham chi u đ i t ng (Object Reference) là bi n đ c s d ng đ x lý các

đ i t ng

• Các bi n t nh (static variable) là bi n c a l p đ i di n cho c l p

• Các bi n c c b : là bi n đ c khai báo trong các ph ng th c và trong các kh i

Trang 9

Bi u th c đi u ki n A?B:C tr v giá tr B n u A có giá tr true, tr v giá tr C n u A có giá tr false

̇ Các l nh đi u khi n dòng th c hi n trong Java

Trang 10

Có th <Thân_chu_trình> không đ c th c hi n l n nào n u ngay t đ u

< i u_ki n> có giá tr false

< i u_ki n> là bi u th c boolean

Trang 11

} while(< i u_ki n>);

while(< i u_ki n_l p>) {

Trang 13

t ng hay d li u mà nó thao tác (nh file hay đ a ch m ng) xác đ nh nó vi ph m các qui t c c b n (nh đ c d li u t m t lu ng đã b đóng), R t nhi u ng i l p trình không th ki m tra t t c các

tr ng thái l i có th x y ra

Exception cung c p m t cách đ ki m tra các l i mà không chia c t mã Exception c ng đ a ra m t

c ch báo l i m t cách tr c ti p ch không s d ng các c ch báo l i tr c ti p ch không s d ng các c hay các hi u ng ph

Các ngo i l trong Java

Trong Java có m t l p Exception, m i l p ngo i l là l p con c a l p này L p Exception là l p con

c a l p Throwable

L p Throwable ch a m t xâu đ c s d ng đ mô t ngo i l Ngo i l đ c phân thành hai lo i: Ngo i l đ c ki m tra (checked exception) và ngo i l không đ c ki m tra (unchecked exception) Ngo i l đ c ki m tra là ngo i l mà trình biên d ch s ki m tra ph ng th c c a ng i l p trình ch

đ a ra ngo i l khi chúng đ c thông báo đ đ a ra

Ngo i l không đ c ki m tra là l p con c a các l p Error; RuntimeException

Java cung c p m t mô hình qu n lý các ngo i l cho phép ki m tra các l i các v trí có liên quan try và catch

Trang 14

catch(Exception e) {

} Khi các kh i try đ c l ng nhau, kh i try bên trong đ c x lý tr c và m t ngo i l đ c đ a ra trong kh i đó đ c đón b t trong các kh i try catch con N u kh i catch bên trong không th a mãn thì các kh i try bên ngoài đ c ki m tra N u m t kh i catch phù h p đ c tìm th y, thì ngo i l đ c

qu n lý trong kh i đó ng c l i thì môi tr ng Java Runtime qu n lý ngo i l

Trang 15

Kh i finally là kh i mà chúng ta th y các l nh tr v các tài nguyên cho h th ng và các l nh khác

đ in ra b t k thông báo nào

Trang 16

- 16 -

M nh đ throw

Các ngo i l đ c đ a ra b ng cách s d ng l nh throw, nó nh n m t đ i t ng làm tham s , đ i

t ng thu c l p là l p con c a l p Throwable

Trang 17

- 17 -

C:\MyJava\Baitap>java ThrowDemo -1

ArraySizeException: Nhap kich thuoc mang khong hop le

Gi i thích:

NegativeArraySizeException B ng cách t o ra m t đ i t ng c a l p này, chúng ta đã in ra thông báo ngo i l Ph ng th c checkSize() có th đ a ra ngo i l ArraySizeException

Trang 18

try catch finally demo

Khong the chia 0!

IV CÁC L P VÀ CÁC I T NG TRONG JAVA

n v c b n trong l p trình Java là l p Các l p bao g m các ph ng th c Các l p bao

g m các ph ng th c th c hi n công vi c tính toán Các l p c ng đ a ra c u trúc c a đ i t ng,

c ng v i c ch t o ra đ i t ng t các đ nh ngh a l p B n có th ch tính toán v i các ki u nguyên

Trang 19

[<Ph m vi ho c thu c tính ki m soát truy nh p>]<Ki u tr v ><Tên ph ng th c>

([<Danh sách tham bi n hình th c>])[<M nh đ throws>]

{

<N i dung ph ng th c>

}

Trong đó

<Ki u tr v > có th là ki u nguyên th y, ki u l p ho c không có giá tr tr l i (ki u void)

<Danh sách tham bi n hình th c> bao g m dãy các tham bi n (ki u và tên) phân cách v i nhau b i

d u ph y

Các ki u ph m vi hay ki m soát truy c p

̇ public: Các thành ph n đ c khai báo là public có th đ c truy c p b t k n i nào có th

truy c p đ c, và chúng đ c th a k b i các l p con c a nó

ki u_d _li u1 bi n1

ki u_d _li u2 bi n2

Trang 20

- 20 -

̇ private: Các thành ph n đ c khai báo là private ch có th đ c truy c p trong chính l p đó

̇ protected: Các thành ph n đ c khai báo là protected có th đ c truy c p b i và th a k

b i các l p con, và có th truy xu t b i mã l nh c a cùng gói đó

Constructor

Constructor là m t ph ng th c đ c bi t không có giá tr tr v và có tên trùng v i tên l p

Tr ng h p không có constructor nào đ c đ a ra trình biên d ch cung c p constructor m c đ nh cho

t ng M t s l p có các tr ng public đ ng i l p trình có th thao tác tr c ti p, nh ng trong h u

h t các tr ng h p đi u này không ph i là m t ý t ng t t

Các giá tr tham s

T t c các tham s đ i v i các ph ng th c Java là “g i theo tr ” Ngh a là, các giá tr c a các

bi n tham s trong m t ph ng th c là các b n sao c a các giá tr do ng i g i xác đ nh

Truoc khi goi ham:one=1.0

Sau khi chia:x=0.5

Sau loi goi ham chia:one =1.0

Truy n các tham chi u trong m ng

Trang 21

- 21 -

M ng trong Java đ c xem là đ i t ng Các ph n t c a m ng có th có ki u nguyên th y

ho c ki u tham chi u (ki u l p)

Ví d : L c ra ph n t l n nh t c a m t m ng và đ a v cu i m ng

C:\MyJava\Baitap>java Loc

8 1 4 3 2 5

1 4 3 2 5 8

Vì trong Java các l i g i hàm đ u th c hi n theo tham tr (call – by – value) v i ki u nguyên

th y và tham chi u đ i v i ki u l p nên hàm doiCho() thay đ i đ c các ph n t c a day

Các tham bi n final

Tham bi n hình th c có th đ c khai báo v i t khóa final đ ng tr c Tham bi n final là tham bi n không đ c kh i t o giá tr cho đ n khi nó đ c gán m t tr nào đó và khi đã đ c gán tr thì không th thay đ i giá tr đó đ c

double tien = banh.tinh(10,giaBan);

System.out.println("Gia ban: "+giaBan);

System.out.println("Tien ban duoc: "+tien);

Trang 22

Tong cua day so la 102.0

Phân lo i ph ng th c theo tính đa hình

̇ Các ph ng th c n p ch ng (overloaded method)

̇ Các ph ng th c n p ch ng là các ph ng th c n m trong cùng m t l p có cùng tên nh ng khác nhau v danh sách tham s

Các ph ng th c n p ch ng là m t d ng c a tính đa hình th i gian biên d ch

Trang 23

Phep cong hai so nguyen :30

Phep cong hai so dau phay dong :75.65

Phep cong hai xau :Good Morning

Gi i thích: Trong ch ng trình trên ph ng th c add() là ph ng th c đ c n p ch ng Có ba

ph ng th c có cùng tên add() nh ng có các tham s khác nhau Khi chúng ta g i ph ng th c add()…????

V CÁC LU NG VÀO RA

Khi l p b t k ch ng trình nào trong m t ngôn ng nào thì v n đ vào ra d li u gi a

ch ng trình và ngu n d li u c ng nh đích d li u là v n đ mà ng i l p trình c n ph i quan tâm Làm th nào đ ta có th truy n d li u cho m t ch ng trình Java Có hai cách hi u qu đ th c

hi n đi u này:

̇ Thông qua m t tài nguyên tu n t nào đó nh file ho c qua m t máy tính khác

̇ Thông qua giao di n ng i máy

M c đích c a ch ng này là xem xét cách truy n d li u cho m t ch ng trình thông qua m t máy tính khác hay t p tin

Khái ni m lu ng(stream)

Theo ngh a đen lu ng là m t đ ng ng n c

V m t thu t ng chuyên nghành ta có th hi u “Các lu ng là các dãy d li u có s p th t ”

Xét trên quan đi m c a ch ng trình và ngu n d li u (Data Soure) ta có th phân lo i lu ng thành hai lo i: Lu ng xu t (output stream) và lu ng nh p (input stream) tr c quan h n chúng ta xem hình v d i đây:

Program Data Source

InputStream

OutputStream

Trang 24

- 24 -

Nh v y n u chúng ta c n l y d li u t ngu n vào ch ng trình thì c n ph i s d ng lu ng

nh p Ng c l i, n u ta c n ghi d li u t ch ng trình ra ngu n d li u thì ta c n ph i s d ng

lu ng xu t

Vai trò c a các lu ng trong ch ng trình Java

̇ Các lu ng là các đ ng ng đ g i và nh n thông tin (ghi và đ c m t lu ng)

̇ Các lu ng che d u các chi ti t ho t đ ng bên trong c a h đi u hành, trong khi v n cho phép truy c p các tài nguyên h th ng thông qua các t p tin

Lu ng xu t và lu ng nh p chu n

Trong l p java.lang.System có lu ng nh p chu n và lu ng xu t chu n

̇ System.out: Lu ng xu t chu n th ng đ c s d ng đ hi n th k t qu đ u ra trên màn hình

̇ System.in: Lu ng nh p chu n th ng đ n t bàn phím và đ c s d ng đ hi n các ký t

̇ System.err: Lu ng l i chu n

Lu ng xu t và nh p thu c gói java.io

Gói java.io: đ nh ngh a các l p tr u t ng cho các lu ng nh p và xu t c b n

Ngu n d li u (Data Source)

Ngu n d li uh là n i xu t phát c a d li u có th là máy tính c c b , máy tính xa, hay c

̇ public abstract int read() throws IOException

c m t byte d li u và tr v byte đã đ c đ c Giá tr tr v là –1 khi k t thúc lu ng

̇ public int read(byte[] b) throws IOException

̇ public int read(byte[] b, int off, int len) throws IOException

̇ public long skip(long count) throws IOException

̇ public void close() throws IOException

L p OutputStream

L p tr u t ng OutputStream khai báo các ph ng th c đ ghi d li u vào đích

̇ public abstract void write(int b)throws IOException

̇ public void write(byte[] b)throws IOException

̇ public void write(byte[] b, int off, int len) throws IOException

̇ public void close()

̇ public void flush()

Các lu ng xu t nh p khác đ c th a k t các lu ng tr u t ng InputStream và OutputStream i

v i m i ki u d li u và ngu n d li u chúng ta có th có các ki u lu ng xu t và nh p riêng, ch ng h n

Trang 25

Ví d :

Vi t ch ng trình t o l p m t lu ng xu t m ng (ByteArrayOutputStream) 100 byte Ghi vào lu ng xu t

m ng 100 ph n t t 0 đ n 99 d li u t lu ng xu t m ng vào m ng b In d li u t m ng b ra màn hình

Trang 26

byte[] b = new byte[100];

} }

v n t n t i trong m ng

Lu ng xu t nh p t p tin

Trang 27

- 27 -

i v i lu ng xu t nh p t p tin ta hình dung nh sau: ch ng trình Java là n i tiêu th d

li u, t p tin là n i cung c p d li u

̇ đ c d li u t t p tin vào b nh ta s d ng lu ng nh p t p tin FileInputStream

̇ ghi d li u t b nh vào t p tin ta s d ng lu ng xu t t p tin FileOutputStream

OutputStream os = new FileOutputStream(args[0]);

String s = "Thu nghiem voi luong xuat nhap tap tin";

for(int i=0;i<s.length();i++) os.write(s.charAt(i));

os.close();

InputStream is = new FileInputStream(args[0]);

int len = is.available();

System.out.println("Luong nhap co "+len+ " bytes");

byte b[] = new byte[len];

int sobyte = is.read(b,0,len);

System.out.println(sobyte+ " la so bytes da doc");

FileOutputStream

Trang 28

- 28 -

}

K t qu th c hi n ch ng trình

C:\MyJava\Baitap>java FileIOExam abc.txt

Luong nhap co 38 bytes

̇ RandomAccessFile(String name, String mode) throws IOException

̇ RandomAccessFile(File file, String mode) throws IOException

̇ long getFilePointer() throws IOException : Tr v v trí c a con tr t p

̇ long length() throws IOException: cho bi t s byte hay đ dài c a t p

̇ void seek(long offset) throws IOException: Chuy n con tr t p đi offset v trí k t đ u t p

̇ void close() throws IOException: Khi không c n truy nh p t p n a thì đóng l i

Ví d :

import java.io.*;

public class RandomAccessDemo

{

static String filename="dayso.dat";

final static int INT_SIZE=4;

//Tao file de ghi

public void createFile() throws IOException

{

File datFile = new File(filename);

RandomAccessFile out_file = new RandomAccessFile(datFile,"rw");

for(int i=0;i<10;i++)out_file.writeInt(i*i);

out_file.close();

}

//Mo file de doc

public void readFile() throws IOException

Trang 29

- 29 -

{

File datFile = new File(filename);

RandomAccessFile inp_file= new RandomAccessFile(datFile,"r");

System.out.println("Cac so doc tu file:");

long len = inp_file.length();

//Mo file de ghi

public void extendFile() throws IOException

{

RandomAccessFile out_file = new RandomAccessFile(filename,"rw");

for(int i=10;i<20;i++) out_file.writeInt(i*i);

Trang 30

- 30 -

Ti n trình

Ti n trình (process) là tr ng thái t c th i c a m t ch ng trình đang ch y trên máy tính

M c đích c a ti n trình và tuy n đo n là cho phép nhi u máy tính th c hi n nhi u tác v đ ng th i

Ví d

A là m t tài kho n t i ngân hàng, có các tác v là:

• getBalance(): l y ra giá tr c a tài kho n

• setBalance(): chép l i giá tr vào b n ghi tài kho n

Tuy n đo n

Khi m t h đi u hành hi n đ i mu n kh i đ ng m t ch ng trình, nó t o ra m t ti n trình m i

M t ti n trình là m t ch ng trình mà hi n đang đ c x lý M i ti n trình có ít nh t m t ti n đo n đang ch y bên trong nó ôi khi các tuy n đo n đ c xem nh là các ti n trình

Xét ví d tuy n đo n d i đây

Mô hình l p trình đ n tuy n đo n th ng g p nhi u ngôn ng l p trình

Trong m t ngân hàng th c t , có nhi u tuy n đo n cùng ho t đ ng đ ng th i

Có nhi u teller đang c p nh t tài kho n c a ngân hàng

Trang 31

- 31 -

Tình hu ng có nhi u tuy n đo n cùng truy c p t i m t đ i t ng

a tuy n đo n(Multi-thread)

M t ng d ng có th có nhi u tuy n đo n Kh n ng làm vi c v i nhi u tuy n đo n đ c g i

là đa tuy n đo n a tuy n đo n cho phép b n vi t các ch ng trình hi u qu t n d ng t i đa CPU,

b ng cách duy trì th i gian tr là t i thi u

T i cùng m t th i đi m có hai khách hàng cùng ghi có vào cùng m t tài kho n N u th c hi n

nh v y thì ch có tuy n đo n th hai m i th c s nh h ng t i tài kho n, k t qu c a giao d ch th

nh t s b m t kh c ph c đi u này c n có m t c ch đ thông báo m t đ i t ng đang đ c s

d ng hay không

Các cách cài đ t tuy n đo n

Có hai cách l p trình tuy n đo n trong Java

Cách 2: Th c thi giao di n Runnable

class C2() implements Runnable {

public C2(){Thread t = new Thread(this);}

public void run(){ }

}

t o m t tuy n đo n đi u khi n b t đ u b ng cách t o m t đ i t ng Thread

Thread worker = new Thread();

l p trình tuy n đo n ta ph i s d ng gói java.lang, tuy nhiên do gói ngày đ c m c đ nh nên ta không c n ph i khai báo

Trang 32

- 32 -

M t s ph ng th c c b n khi l p trình tuy n đo n

sleep(): làm ch m di n ti n c a ch ng trình

start(): kh i đ ng m t tuy n đo n

init(): kh i t o m t tuy n đo n

stop(): h y m t tuy n đo n

run(): th c hi n nhi m v c a tuy n đo n

suspend(): ng ng ho t đ ng c a tuy n đo n

resume():kích ho t tuy n đo n ti p t c ho t đ ng

Chú ý:

So sánh ph ng th c stop() c a Applet và ph ng th c stop() c a tuy n đo n

̇ Ph ng th c stop() c a Applet ch t m ng ng ho t đ ng c a ng d ng ký sinh

̇ Ph ng th c stop() c a tuy n đo n:Sau khi g i ph ng th c stop() c a tuy n đo n, tuy n đo n không t n t i

Ví d :

Vi t ch ng trình hai tuy n đo n in ra t “ping” và t “PONG” v i cac

class PingPong extends Thread {

Trang 33

làm cho m t l p có th s d ng đ c trong môi tr ng đa tuy n đo n, các ph ng th c t ng

ng s đ c khai báo là synchronized

N u m t tuy n đo n kích ho t m t ph ng th c synchronized trên m t đ i t ng, đ i t ng đó s b khóa M t tuy n đo n khác kích ho t ph ng th c synchronized trên cùng đ i t ng đó s b phong

t a cho t i khi khóa trên đ i t ng đ c gi i phóng

Ví d :

L p Account:

class Account{

private double balance;

public Account(double initialDeposit)

Trang 34

L nh synchronized cho phép b n x lý mã đ ng b hóa mà khóa m t đ i t ng mà không

c n đòi h i b n tri u g i m t ph ng th c synchronized trên đ i t ng đó

Cú pháp

synchronized (expr) statement Khi có đ c khóa, statement đ c x lý y nh nó là m t ph ng th c synchronized trên đ i

t ng đó

Ví d

Chuy n các ph n t trong m ng thành các s không âm

public static void abs(int[] v) {

synchronized(v) {

for(int i=0;i<v.length;i++) {

} }

}

Ví d

L p trình tuy n đo n b ng cách th c thi giao di n Runnable

class RunPingPong implements Runnable

{

RunPingPong(String w, int d)

Trang 35

Runnable ping = new RunPingPong("ping",33);

Runnable pong = new RunPingPong("PONG",100);

Font f = new Font("Times New Roman",Font.BOLD,24);

Date d = new Date();

public void init()

Trang 36

} }

}

public void paint(Graphics g)

{

Trang 38

public static InetAddress InetAddress.getByName(String hostname)

public static InetAddress[] InetAddress.getAllByName(String hostname)

public static InetAddress InetAddress.getLocalHost()

Ta xét ph ng th c đ u tiên Ph ng th c này nh n tên c a hostname làm tham s và tr v

System.out.println("Cach su dung: java TimDCIP <Hostname>");

}

String hostName = host.getHostName();

Trang 39

• public String getHostName(): Ph ng th c này tr v m t xâu bi u di n hostname c a

m t đ i t ng InetAddress N u máy không có hostname, thì nó s tr v đ a ch IP c a máy này d i d ng m t xâu ký t

• public int getAddress() : N u b n mu n bi t đ a ch IP c a m t máy, ph ng th c

d ng d li u đ c nh n, hay làm th nào đ truy n tin v i server; b n ch c n cho bi t URL Java s

l y d li u v cho b n

L p java.net.URL là m t khái ni m v b đ nh v tài nguyên th ng nh t N u l u tr URL d i

d ng m t đ i t ng String s không có l i h n so v i vi c t ch c URL nh m t đ i t ng v i các

tr ng : giao th c (protocol), hosname, c ng (port), đ ng d n (path), tên t p tin (filename), m c tài

li u (document section), m i tr ng có th đ c thi t l p m t cách đ c l p

T o các đ i t ng URL m i

Có b n constructor, khác nhau v thông tin mà nó c n Constructor mà b n s d ng ph thu c vào thông tin mà b n có, và khuôn d ng trong URL đó T t c các constructor này s đ a ra ngo i l MalformedURLException (URL không đúng khuôn d ng) n u ta t o ra m t URL cho m t giao th c mà

nó không đ c h tr

̇ public URL(String url) throws MalformedURLException

ây là constructor đ n gi n nh t; tham s c a nó ch là m t URL d ng xâu

Ví d

try{

URL u = new URL(“http://www.sun.com/index.html”);

}

Ngày đăng: 28/10/2013, 10:15

Xem thêm

HÌNH ẢNH LIÊN QUAN

Hình trên ch  ra r ng l p java.util.Date là kh  tu n t . Nh ng không ph i t t c  các l p là kh  tu n  t - Lap trinh mang
Hình tr ên ch ra r ng l p java.util.Date là kh tu n t . Nh ng không ph i t t c các l p là kh tu n t (Trang 67)

TỪ KHÓA LIÊN QUAN

w