Tải bản đầy đủ (.pdf) (119 trang)

bài giảng lập trình mạng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (929.21 KB, 119 trang )

Bài giảng Lập trình Mạng

L I NÓI Đ U
Ngày nay, hầu như việc viết một ứng dụng để chạy trên máy đơn cục bộ không còn được ưa
chuộng và thích hợp nữa. Các chương trình và ứng dụng hiện đại phải tích hợp và triệu gọi lẫn
nhau trên mạng Intranet (mạng cục bộ), mạng Internet (mạng toàn cầu) và ngôn ngữ lập trình
Java là một trong những lựa chọn tốt nhất để làm việc này. Java là một ngôn ngữ lập trình không
đơn giản, ngoài sự nổi tiếng về bản thân ngôn ngữ, nền tảng Java còn hướng đến các ứng dụng
mạng như: giao tiếp trên mạng theo mô hình khách/chủ (client/server) … So với lập trình thông
thường, lập trình mạng đòi hỏi người lập trình những hiểu biết và kỹ năng chuyên sâu hơn để tạo
giao tiếp và trao đổi dữ liệu giữa các máy tính với nhau.
Để giúp sinh viên chuyên ngành CNTT trong Nhà trường có thể tiếp cận được với những kỹ
thuật mới này, chúng tôi đã mạnh dạn soạn thảo cuốn “Bài giảng Lập trình mạng” để đưa vào
giảng dạy cho sinh viên CNTT học năm thứ 3 trong Nhà trường. Cuốn bài giảng này được soạn
thảo dựa trên nền tảng các sinh viên CNTT sau 2 năm học đầu trong trường đã được trang bị
đầy đủ các kiến thức về Ngôn ngữ lập trình hướng đối tượng, Mạng máy tính, Thiết kế Web. Đây
là một môn học với đặc thù là kiến thức luôn đổi mới và cập nhật, do đó yêu cầu với môn học này
là sinh viên phải tự đọc thêm tài liệu, giáo viên chỉ là người hướng dẫn những vấn đề cơ bản
nhất cho sinh viên.
Lập trình mạng là môn học mới được đưa vào giảng dạy, nên trong quá trình soạn thảo bài
giảng không tránh khỏi bỡ ngỡ và thiếu sót. Chúng tôi rất mong được sự giúp đỡ, đóng góp ý
kiến của các đồng nghiệp và độc giả quan tâm để lần tái bản sau cuốn sách được hoàn thiện hơn.
Mọi ý kiến đóng góp có thể gửi về theo địa chỉ email:
Chúng tôi xin chân thành cảm ơn!
Hà Nội 12/2005

Các tác giả

Trang 1



Bài giảng Lập trình Mạng

M CL C
L I NÓI Đ U ......................................................................................................................................................1
M C L C.............................................................................................................................................................2
PH N 1: T NG QUAN V L P TRÌNH M NG ...........................................................................................5
I.

Các giao thức mạng...............................................................................................................................5
I.1.
I.2.
I.3.

II.

Họ giao thức TCP/IP....................................................................................................................................5
Giao thức TCP và UDP................................................................................................................................6
Dịch v từ phía máy ch và khái ni m c ng (PORT) ..................................................................................7

Giao tiếp trên mạng theo mô hình khách/chủ (Client/Server) và khái niệm socket..........................8
II.1.
II.2.
II.3.

Giao ti p theo mô hình khách/ch (Client/Server).......................................................................................8
L p trình m ng thông qua Socket ................................................................................................................8
Tìm hiểu một số lớp c n thi t c a gói th vi n Java.net ..............................................................................8

PH N 2:


NGÔN NG

L P TRÌNH JAVA .............................................................................................15

CH
NG 1: T NG QUAN V JAVA .................................................................................................................15
I. Lịch sử Java.........................................................................................................................................15
II.
Java là gì? ......................................................................................................................................16
III.
Cấu trúc của Java...........................................................................................................................16
IV.
Các đặc tính chính của Java...........................................................................................................18
IV.1.
IV.2.
IV.3.
IV.4.
IV.5.
IV.6.
IV.7.

An ninh .................................................................................................................................................18
Giao di n l p trình ứng d ng chuẩn - Core API ...................................................................................19
T ng thích với nhi u kiểu ph n cứng .................................................................................................19
Đặc tính động và phân tán ....................................................................................................................19
H ớng đối t ợng...................................................................................................................................19
Đa lu ng (multi-threads).......................................................................................................................20
Qu n lý bộ nhớ và quá trình thu dọn 'rác' .............................................................................................20

CH

NG 2: CÁC THÀNH PH N C B N C A NGÔN NG L P TRÌNH JAVA .......................................................22
I. Ghi chú (Comment) .............................................................................................................................22
II.
Câu lệnh và khối lệnh .....................................................................................................................23
II.1.
II.2.

III.
IV.

Câu l nh .....................................................................................................................................................23
Khối l nh....................................................................................................................................................24

Tập ký tự dùng trong JAVA.............................................................................................................24
Từ khóa và tên ................................................................................................................................25

IV.1.
IV.2.

V.

Tên........................................................................................................................................................25
Từ khóa.................................................................................................................................................25

Kiểu dữ liệu.....................................................................................................................................25
V.1.
V.2.
V.3.

VI.

VII.

Kiểu d li u c b n ....................................................................................................................................26
Kiểu d li u d n xu t (Reference) ............................................................................................................26
Giá trị mặc định .........................................................................................................................................26

Hằng (literal) ..................................................................................................................................27
Biến .................................................................................................................................................27

VII.1.
Kiểu bi n...............................................................................................................................................28
VII.1.1. Bi n đối t ợng..................................................................................................................................28
VII.1.2. Bi n lớp............................................................................................................................................28
VII.1.3. Bi n c c bộ.......................................................................................................................................28
VII.1.4. Ph m vi c a bi n ..............................................................................................................................29

VIII.
IX.

Chuyển đổi kiểu dữ liệu .............................................................................................................29
Biểu thức và Toán tử.......................................................................................................................30

IX.1.
IX.2.
IX.3.
IX.4.
IX.5.
IX.6.
IX.7.
IX.8.

IX.9.
IX.10.

X.

Các toán t số học:................................................................................................................................30
Các phép toán tăng gi m.........................................................................................................................2
Toán t quan h và đi u ki n ..................................................................................................................2
Toán t lu n lý........................................................................................................................................2
Các toán t làm vi c với bit ....................................................................................................................2
Toán t gán ...........................................................................................................................................33
Một số toán t khác ..............................................................................................................................33
Phép toán trên kiểu chuối ( String) .......................................................................................................34
Độ u tiên các toán t ...........................................................................................................................34
Biểu thức...............................................................................................................................................35

Các câu lệnh điều khiển..................................................................................................................35

Trang 2


Bài giảng Lập trình Mạng
X.1.
C u trúc rẽ nhánh .......................................................................................................................................35
X.1.1. C u trúc đi u ki n rẽ nhánh if.............................................................................................................35
X.1.2. C u trúc đi u ki n rẽ nhánh phức : switch ..........................................................................................36
X.2.
C u trúc lặp ................................................................................................................................................38
X.2.1. Vòng lặp for ........................................................................................................................................38
X.2.2. Vòng lặp while và do: .........................................................................................................................39

X.3.
Ngo i l và câu l nh nắm bắt ngo i l .......................................................................................................41

CH
NG 3: APPLETS ..................................................................................................................................43
I. Đại cương về HTML............................................................................................................................43
II.
Tổng quan về applet........................................................................................................................43
II.1.
Ví d v Applet ..........................................................................................................................................43
II.2.
Vòng đ i c a một Applet ...........................................................................................................................44
II.2.1. N p một Applet...................................................................................................................................44
II.2.2. R i khỏi và quay tr v trang web chứa applet...................................................................................45
II.2.3. N p l i Applet (Reloading the Applet)................................................................................................45
II.2.4. Thoát khỏi trình duy t.........................................................................................................................45
II.2.5. Tóm tắt ................................................................................................................................................45
II.3.
Các ph ng thức c b n.............................................................................................................................46
II.3.1. init() ....................................................................................................................................................46
II.3.2. start() ...................................................................................................................................................46
II.3.3. stop() ...................................................................................................................................................46
II.3.4. destroy() ..............................................................................................................................................46
II.4.
Các ph ng thức vẽ và nắm bắt sự ki n.....................................................................................................47
II.5.
Các ph ng thức cho l p trình giao di n ng i dùng ................................................................................47
II.5.1. Các thành ph n UI xây dựng sẵn.........................................................................................................47
II.5.2. Các ph ng thức để s d ng các thành ph n UI trong các Applet......................................................48
II.5.3. Thêm một Text Field không edit đ ợc vào applet Simple ..............................................................48

II.6.
Giới h n c a Applet ...................................................................................................................................49
II.6.1. Giới h n v b o m t ............................................................................................................................49
II.6.2. Các kh năng c a Applet.....................................................................................................................50
II.7.
Test một applet...........................................................................................................................................50

III.

Các tính năng cao cấp của Applet API...........................................................................................51

III.1.
III.2.
III.3.
III.4.
III.5.
III.6.
III.7.
III.7.1.
III.7.2.

Tìm ki m và n p các file d li u...........................................................................................................52
Hiển thị chu i tình tr ng ngắn ..............................................................................................................52
Hiển thị tài li u trong trình duy t..........................................................................................................53
G i thông đi p tới các applet khác .......................................................................................................54
Tìm một applet bằng tên: s d ng ph ng thức getApplet...................................................................55
Tìm t t c các applet trên một trang: s d ng ph ng thức getApplets................................................59
Đan xen vào các trang Web ..................................................................................................................60
Các thuộc tính (Attributes).................................................................................................................61
Các thông số c a applet .....................................................................................................................61


CH
NG 4: CÁC GÓI & GIAO DI N ..........................................................................................................63
I. Giới thiệu.............................................................................................................................................63
II.
Các giao diện..................................................................................................................................63
II.1.Các b ớc để t o một giao di n .........................................................................................................................63
II.2.Hi n thực giao di n...........................................................................................................................................64

III.

Các gói............................................................................................................................................66

III.1.T o một gói .....................................................................................................................................................68
III.2.Thi t l p đ ng d n cho lớp (classpath)..........................................................................................................70

IV.

Gói và điều khiển truy xuất.............................................................................................................72

IV.1. Gói java.lang ..................................................................................................................................................73
IV.1.1.Lớp String (lớp chuỗi) ............................................................................................................................74
IV.1.2.Chuỗi mặc định (String pool)..................................................................................................................75
IV.1.3.Các ph ng thức c a lớp String..............................................................................................................76
IV.1.4.Lớp StringBuffer.....................................................................................................................................78
IV.1.5.Các ph ng thức lớp StringBuffer..........................................................................................................80
IV.1.5.Lớp java.lang.Math.................................................................................................................................82
IV.1.6.Lớp Runtime (Th i gian thực hi n ch ng trình)...................................................................................84
IV.1.7.Lớp System .............................................................................................................................................85
IV.1.8.Lớp Class ................................................................................................................................................87

IV.1.9.Lớp Object ..............................................................................................................................................88
IV.2. Gói java.util....................................................................................................................................................89
IV.2.1.Lớp Hashtable (b ng băm)......................................................................................................................90
IV.2.2.Lớp random.............................................................................................................................................93
IV.2.3.Lớp Vector..............................................................................................................................................94
IV.2.4.Lớp StringTokenizer ...............................................................................................................................97

Trang 3


Bài giảng Lập trình Mạng
PH N 3:

L P TRÌNH SOCKET ............................................................................................................102
NG 1: L P TRÌNH TCP SOCKET ...........................................................................................................102
Xây dựng chương trình EchoServer ..................................................................................................102
Xây dựng chương trình EchoClient ..............................................................................................103
NG 2: L P TRÌNH UDP SOCKET...........................................................................................................105
Xây dựng chương trình ExchangeRateServer ...................................................................................105
Xây dựng chương trình ExchangeRateTable ................................................................................106

CH
I.
II.
CH
I.
II.
PH N 4:

L P TRÌNH TRÊN INTERNET ......................................................................................109

NG 1: JSP VÀ CÁC KHÁI NI M M Đ U ................................................................................................110
Các cơ chế hoạt động của trang JSP ................................................................................................110
Xây dựng trang JSP ......................................................................................................................110
NG 2: CÁC CÚ PHÁP C B N C A JSP ................................................................................................112
Các đối tượng mặc định của JSP ......................................................................................................112
Các thẻ lệnh JSP...........................................................................................................................112

CH
I.
II.
CH
I.
II.

II.1.
II.2.
II.3.
II.4.
II.5.

III.

Thẻ bọc mã <% %>..................................................................................................................................112
Thẻ hiển thị k t xu t <%= %> .................................................................................................................113
Thẻ chỉ d n biên dịch trang <%@ page %>.............................................................................................114
Chèn chú thích vào mã trang JSP.............................................................................................................114
Khai báo ph ng thức và bi n hằng <%! %> ..........................................................................................116

Truy xuất cơ sở dữ liệu trong trang JSP.......................................................................................116


TÀI LI U THAM KH O ...............................................................................................................................119

Trang 4


Bài giảng Lập trình Mạng

Ph n 1: T ng quan v l p trình m ng
I.Các giao thức m ng
I.1.Họ giao thức TCP/IP
Để hai hay nhi u máy có thể giao ti p đ ợc với nhau, chúng ph i dùng một ngôn ng chung:
chẳng h n máy này ph i g i nh ng tín hi u gì đ n máy kia và máy kia ph i g i tr l i nh ng tín
hi u nào để nh n bi t. Trên Internet ngày nay vi c hai máy có thể trao đ i đ ợc với nhau đa số
đ u dựa theo quy ớc hay giao thức cốt lõi là TCP/IP (Transmission Control Protocol/ Internet
Protocol). Theo giao thức này, mỗi máy sẽ đ ợc đặt cho một số riêng bi t gọi là địa chỉ IP (IP
address) có vai trò t

ng tự số đi n tho i, chẳng h n máy tính có tên là www.microsoft.com sẽ có

địa chỉ IP là 207.46.230.219. Các số IP này là duy nh t và không máy nào đ ợc trùng nhau (trên
toàn th giới). Khi b n muốn máy c a mình có địa chỉ IP để tham gia vào h thống Internet toàn
c u nh là một máy ch (host hay server) ta ph i đăng ký với t chức quốc t InterNIC (Internet
Network Information Center) để nh n đ ợc một số IP riêng bi t.
V y t i sao vừa có địa chỉ IP l i vừa có tên riêng cho từng máy? Dùng cái nào để xác định
liên l c với một máy ch (nh

trên, ta nên dùng www.microsoft.com hay số 207.46.230.219 để

k t nối với một máy ch c a công ty Microsoft). Th t ra tên và địa chỉ IP là một, nh ng địa chỉ IP
đ ợc ghi bằng số, còn tên c a máy ch l i đ ợc ghi bằng ch có ý nghĩa và g n gũi h n với con

ng

i. Với mỗi h thống đ u có sự chuyển đ i trực ti p từ tên vùng thành địa chỉ IP thích hợp

tr ớc khi d li u đ ợc g i đi.
Ví d đối với Windows có thể tham kh o hai t p tin HOSTS và LMHOSTS đây là hai t p tin
văn b n (đ ợc coi nh một c s d li u) để l u tr t p hợp các số IP cùng với tên t

ng ứng. Ta

có thể tự thêm vào địa chỉ IP và tên máy ch cách nhau bằng kho ng trắng. Khi có nhu c u truy
c p đ n một máy
địa chỉ IP t

xa qua giao thức m ng TCP/IP n u gõ vào tên máy ch thì h thống sẽ tự tìm

ng ứng trong t p tin này:

T p tin HOSTS
216.32.74.52 www.myyahoo.com
164.71.2.70 www.fujitsu.com
Tên c a máy ch còn đ ợc gọi là tên vùng (domain name) b i vì chúng đ ợc đặt theo thứ tự
phân c p c a tên lãnh th , vùng, t chức, hay tên cá nhân... mỗi nhóm phân c p cách nhau b i
một d u ch m (.). Công vi c theo dõi sự thay đ i tên đ ợc phân phối qua Internet nh các máy
ch lớn DNS (Domain Name System) theo dõi các máy ch khác trong vùng con c a chúng.

Trang 5


Bài giảng Lập trình Mạng

Tr ớc đây mỗi máy có thể tự mình l u tr một t p tin chứa ph n lớn các tên và địa chỉ c a nh ng
máy ch thông d ng (nh trong Windows là t p tin HOSTS và LMHOSTS), nh ng ngày nay ta
không làm nh v y n a mà đa số các tên vùng cũng nh địa chỉ IP đ ợc l y xuống từ các máy
ch DNS.
Khi đọc tên vùng c a một máy ch ta đi từ trái qua ph i. Ví d :
Java.sun.com

tên máy tính

tên t chức

tên vùng

Nói chung là theo quy ớc từ ph n riêng bi t nh t đ n ph n chung nh t. Tuy nhiên không bắt
buộc là nh v y, ta v n có thể đặt tên theo cách khác, không nh t thi t là chỉ g m 3 hay 4 nhóm
(ví d : here.is.along.name.address.co.vn là hợp l ) b i vì cuối cùng thì tên vùng cũng đ ợc h
thống DNS chuyển thành địa chỉ IP mà thôi.

I.2.Giao thức TCP và UDP
Quá trình chuyển d li u trên m ng là khá phức t p. Chi ti t quá trình này di n ra t
nh trong thực t ta g i th hay b u phẩm, tr ớc h t ph i ghi rõ địa chỉ n i đ n (tr

ng tự

ng hợp này

là địa chỉ IP c a máy ch ), sau đó có thể g i thông th

ng hoặc g i b o đ m (tùy theo cách g i


mà th hay b u phẩm có chắc chắn đ n đ ợc tay ng

i nh n hay không), ng

i nh n sau khi

nh n đ ợc có thể h i âm tr l i là đã nh n đ hoặc bị m t mát gì đó trong quá trình chuyển t i.
Ng

i g i có thể g i ti p nh ng ph n bị m t (hoặc không c n g i n a)
Cách chuyển d li u b o đ m dựa vào giao thức TCP (Transmission Control Protocol), còn

cách truy n không đ m b o dựa vào giao thức UDP (User Datagram Protocol).
Giao thức TCP g i từng gói d li u đi, n i nh n theo giao thức này ph i có trách nhi m
thông báo và kiểm tra xem d li u đã đ n đ hay ch a, có lỗi hay không có lỗi. Tr ớc khi chuyển
d li u bao gi cũng có sự k t nối gi a máy g i và máy nh n. Do ph i đ m b o d li u đ ợc
truy n chính xác và luôn duy trì k t nối nên s d ng giao thức TCP c n chi m thêm một số tài
nguyên c a h thống và cách l p trình cho giao thức này h i khó (ph i thực hi n các b ớc kiểm
tra d li u theo yêu c u c a TCP). Truy n d li u theo TC th

ng áp d ng cho các dịch v nh

truy n t p tin, các dịch v trực tuy n trên Internet đòi hỏi độ tin c y cao …
Giao thức UDP ng ợc l i không đáng tin c y lắm, không có sự k t nối tr ớc nào gi a n i g i
và n i nh n, d li u g i đi mặc định rằng máy tính

đ u nh n luôn

tr ng thái sẵn sàng để ti p


Trang 6


Bài giảng Lập trình Mạng
đón d li u g i đ n. N u d li u g i đ n bị lỗi trong quá trình truy n hay không nh n đ ợc đ y
đ giao thức UDP cũng không có thông tin ph n h i gì l i cho n i g i. Tuy nhiên UDP không đòi
hỏi sự chính xác cao nh dịch v thông báo gi , tỉ giá hay các dịch v g i nhắn tin …

I.3.Dịch v từ phía máy chủ và khái ni m c ng (PORT)
Ta có thể k t nối vào Internet thông qua dịch v c a nhà cung c p còn gọi là ISP (nh FPT,
Cnet ...) bằng đ

ng đi n tho i thông qua modem. Các nhà dịch v này đóng vai trò nh nh ng

máy ch (server) giúp d dàng truy c p d li u từ nh ng vùng khác nhau trên m ng.
Khi k t nối vào máy ch ta có thể yêu c u máy ch nhi u dịch v khác nhau, nh dịch v truy
tìm và đọc các trang Web trên Internet, dịch v g i nh n e-mail, dịch v dò tìm h thống tên
vùng DNS ... Mỗi dịch v đ u có cách g i nh n d li u theo quy ớc riêng. TCP và UDP chỉ chịu
trách nhi m đ a d li u từ một máy tính này đ n một máy tính khác, còn d li u đó đ ợc g i cho
dịch v nào thì ph i thông qua một dịch v n a gọi là c ng (hay port). Mỗi ch
sẽ s d ng một c ng khác để truy xu t thông tin. C ng là một số nguyên d

ng trình dịch v

ng có giá trị từ 1 đ n

16383
Máy ch (server) sẽ quy định c ng đ ợc s d ng cho mỗi lo i dịch v . Thông tin gi a máy
khách (client) và máy ch (server) ph i s d ng c ng t
nhau. Tuy nhiên, h u h t các ch


ng ứng nhau thì mới trao đ i đ ợc với

ng trình dịch v n i ti ng hi n nay đ u có quy định chuẩn c ng

dành riêng cho mình nh :
Dịch v c ng (port)
FTP21
HTTP80
Telnet23
Finger79
SMTP25
N u tự xây dựng một ứng d ng làm dịch v trên máy ch ta ph i chọn cho mình một số c ng
có các giá trị khác với nh ng giá trị c ng mà nh ng dịch v n i ti ng khác đã s d ng.

Trang 7


Bài giảng Lập trình Mạng

II.Giao ti p trên m ng theo mô hình khách/chủ (Client/Server) và
khái ni m socket.
II.1.Giao ti p theo mô hình khách/chủ (Client/Server)
Có r t nhi u dịch v hỗ trợ trên Internet nh e-mail, nhóm tin (newsgroup), chuyển t p tin
(file transfer), đăng nh p từ xa (remote login), truy tìm các trang Web ... Nh ng dịch v này đ ợc
t chức và ki n trúc theo mô hình khách/ch (mô hình Client/Server). Các ch
khách (client) nh trình duy t (Web Browser) hay ch
(connection) với một máy ch

ng trình


máy

ng trình g i nh n e-mail sẽ t o ra k t nối

xa (server) sau đó g i các yêu c u đ n máy ch , các ch

ng

trình dich v trên máy ch nh Web server hay Mail server ... sẽ x lý nh ng yêu c u này và g i
k t qu ng ợc v cho máy khách (chẳng h n Web theo địa chỉ mà máy khách đ a đ n còn Mail
server thì l u gi và g i v cho máy khách nh ng bức e-mail mới). Thông th

ng một dịch v

trên máy ch ph c v cho r t nhi u khách.

II.2.L p trình m ng thông qua Socket
Nh v y tr ớc khi yêu c u một dịch v trên máy ch thực hi n đi u gì đó, máy khách
(client) ph i có kh năng k t nối đ ợc với máy ch . Quá trình k t nối này đ ợc Java thực hi n
thông qua một c ch trừu t ợng hóa gọi là Socket (t m gọi là “c ch
khách và máy ch t

ng tự nh vi c cắm phích đi n vào

nh phích cắm đi n còn máy ch đ ợc coi nh

cắm”). K t nối gi a máy

cắm đi n. Máy khách th


cắm đi n, một

ng đ ợc coi

cắm có thể cắm vào đó nhi u

phích đi n khác nhau cũng nh một máy ch có thể k t nối và ph c v cho r t nhi u máy khách.
N u k t nối socket thành công thì máy khách và máy ch có thể trao đ i d li u với nhau
thực hi n các yêu c u v dịch v trên máy ch . Vi c k t nối theo c ch socket c n bi t hai thông
tin ch y u đó là địa chỉ c a máy c n k t nối và số hi u c ng c a ch
c p lớp Socket (th
(th

ng trình dịch v . Java cung

ng đ ợc dùng nh “phich cắm đi n” cho máy khách) và lớp ServerSocket

ng đ ợc dùng nh “ cắm đi n” đặt trên máy ch ). Hai lớp này đ ợc đặt trong gói th vi n

Java.net.

II.3.Tìm hiểu một số l p c n thi t của gói th vi n Java.net
a. L p InetAddress
Vì địa chỉ Internet theo số IP và theo tên r t th

ng dùng khi k t nối vào m ng cho nên Java

xây dựng hẳn một lớp InetAddress dành riêng cho vi c qu n lý địa chỉ theo tên và theo số. Lớp
InetAddress cung c p các ph


ng thức static thông d ng nh t dùng để chuyển đ i và truy xu t

Trang 8


Bài giảng Lập trình Mạng
địa chỉ IP (không có ph
ph



ng thức kh i dựng cho lớp này). Th

ng ta sẽ quan tâm đ n các

ng thức sau:
public static InetAddress getLocalHost ()
throws UnknownHostExceptiongetByName
Tr v đối t ợng InetAddress là địa chỉ c a máy c c bộ (local host)



public static InetAddress getByName (String host)
throws UnknownHostException

Ph

ng thức này nh n địa chỉ c a một máy bằng kiểu chuỗi String và tr v đối t ợng kiểu


InetAddress thay mặt cho địa chỉ máy này.


public static InetAddress[] getAllByName (String host)
throws UnknownHostException

Ph

ng thức này nh n địa chỉ c a một máy bằng kiểu chuỗi và tr v t t c các đối t ợng

InetAddress thay mặt cho địa chỉ máy này.


public byte[] getAddress()
Tr v địa chỉ IP c a đối t ợng InetAddress d ới d ng một dãy các byte. Vị trí byte cao

nh t nằm


byte 0.

public String getHostAddress()
Tr v địa chỉ IP c a đối t ợng InetAddress d ới d ng một chuỗi đ ợc dịnh d ng phân

làm 4 nhóm %d.%d.%d.%d (Ví d : “172.16.11.12”).
D ới đây là ví d cho th y cách dùng lớp InetAddress để l y v các thông tin c a địa chỉ
máy ch :
Ví d 1-0 AddrLookupApp.java
import java.net
b. L p Socket

Lớp Socket dùng t o k t nối từ phía khách với máy ch th
ph



ng đ ợc kh i dựng bằng các

ng thức sau:
public Socket (String host, int port)
throws UnknownHostException, IOException

T o ra một socket để k t nối máy có tên theo địa chỉ host và số c ng port.


public Socket(InetAddress address, int port) throws IOException

T o ra một socket k t nối địa chỉ là đối t ợng InetAddress và số c ng port.

Trang 9


Bài giảng Lập trình Mạng


Public Socket(String host, int port, boolean stream) throws IOException

T o ra một socket k t nối theo địa chỉ host và số c ng port tham số stream cuối cùng để quy
định k t nối theo TCP (stream=true) hay UDP (stream=false). Tuy nhiên n u áp d ng để t o
socket cho giao thức UDP nên s d ng lớp thay th là DatagramSocket.
Các ph



ng thức khác hỗ trợ cho lớp Socket từ phía máy khách bao g m:

InputStream get InputStream() throws IOException

L y v lu ng nh p để máy khách có thể nh p d li u tr v từ phía máy ch .


OutputStream get OutputStream() throws IOException

L y v lu ng xu t để máy khách có thể ghi d li u g i đ n máy ch .


InetAddress get InetAddress()

L y địa chỉ k t nối socket c a máy ch


int getPort()

L y v số c ng dùng k t nối c a máy ch .
Ví d đo n mã sau sẽ thực hi n k t nối với máy ch có địa chỉ “my.testing.server” và m ra
hai lu ng xu t nh p để đọc và g i thông tin đ n máy ch theo số c ng 1234.
try{
Socket me=new Socket(“my.testing.server”, 1234);
// Luồng nhập thông tin để trả về máy chủ từ phía kết nối
DataInputstream in = new DataInputStream(me.getInputStream());
// Luồng xuất để ghi thông tin gửi đến máy chủ
DataOutputStream out = new DataOutputStream(me.getOutputStream());

Catch (Exception e) {
System.out.println(e);
}
c. L p ServerSocket
Lớp ServerSocket dùng t o k t nối từ phía máy ch

với các máy khách. Đối t ợng

ServerSocket đ ợc t o ra trên máy ch và lắng nghe nh ng k t nối từ phía máy khách g i đ n
theo một số c ng địng tr ớc. Đối t ợng ServerSocket đ ợc kh i dựng từ ph


ng thức sau:

public ServerSocket(int port) throws IOException

port là số hi u c ng mà đối t ợng ServerSocket ph i lắng nghe để nh n bi t nh ng k t nối từ
phía máy khách g i đ n
Để ch đợi k t nối từ các máy khách g i đ n đối t ợng ServerSocket th

ng nh đ n ph

ng

thức accept nh sau:


Socket accept () throws IOException
Trang 10



Bài giảng Lập trình Mạng
Ph

ng thức này thực sự dừng l i ch đợi cho đ n khi nh n đ ợc thông tin k t nối sẻ tr v

đối t ợng socket c a máy khách n i có yêu c u nối vào máy ch .
Cuối cùng máy ch có thể cắt đứt mọi k t nối bằng cách gọi ph

ng thức close c a đối t ợng

ServerSocket


Public void close () throws IOException

Ví d đo n mã sau sẽ t o một đối t ợng ServerSocket trê máy ch luôn lắng nghe k t nối từ
phía máy khách g i đ n qua số c ng 1234
Try {
ServerSocket server = new ServerSocket (1234);
Socket client;
// Ch

ng trình sẽ dựng l i

đây để ch đợi sự k t nối

client = server.accept ();
// Có một k t nối g i đ n từ phía máy khách
System.out.println(“Accept connect”);

// X lý các yêu c u v dịch v
// …
// Cắt đứt các k t nối
client.close ();
server.close ();
catch (Exception e) {
System.out.println (e);
}
d. L p DatagramSocket
Lớp này đ ợc dùng để chuyển đi một gói d

li u (biểu di n bằng đối t ợng

DatagramPackage) theo giao thức UDP. D li u đ ợc g i đi không b o đ m đ ợc nh n đ y đ và
có thể bị lỗi trên đ

ng truy n (c ch dùng DatagramSocket không an toàn bằng lớp Socket).

D ới đây là một số ph


public DatagramSocket () throws SocketException



Ph



Ph




ng thức dùng c a lớp DatagramSocket:

ng thức kh i dựng để t o k t nối UDP

public DatagramSocket (int port) throws SocketException
ng thức kh i dựng để t o k t nối UDP với số hi u c ng port

public void synchronized send (DatagramSocket p) throws IOException
G i gói d li u đi.
Public void synchronized receive (DatagramSocket p) throws IOException
Trang 11


Bài giảng Lập trình Mạng


Nh n gói d li u v .
public void synchronized close ()
Đóng k t nối.

e. L p DatagramPackage
Lớp này dùng cho một gói d li u g i đi trên m ng theo k t nối DatagramSocket. Một gói có
thể chứa các thông tin nh d li u, chi u dài gói, các địa chỉ IP và số c ng mà từ đó các gói d
li u đ ợc g i đi. D ới đây là một số ph


Ph


ng thức h u d ng c a lớp DatagramPackage này:

public DatagramPackage(byte buff[], int len)
ng thức kh i t o ra gói có d li u chứa trong bộ đ m buff[] và chi u dài gói d li u là

len.


Ph

public DatagramPackage (byte buff[], int len, InetAddress iaddr, int port)
ng thức kh i t o ra gói có d li u chứa trong bộ đ m buff[] cùng với chi u dài vùng

đ m muốn l y, địa chỉ máy đích và số hi u c ng.


public InetAddress getAddress()

Tr v địa chỉ chứa trong gói d li u.


public byte[] getData()

Tr v d li u th t sự chứa trong gói.



public int getLength()


Tr v kích th ớc hay chi u dài gói d li u.


public int getPort()

Tr vể số hi u c ng chứa trong gói d li u.

f. L p URL
URL(Uniform Resource Locator) là địa chỉ định vị tài nguyên trên m ng, th

ng một một

URL nh đã đ c p bao g m 3 ph n: ph n nghi thức(protocol), ph n địa chỉ hay tên máy
ch (host name), và ph n chỉ định tên t p tin hay tài li u muốn l y từ máy ch v .
Java đóng gói t t c nh ng đặc điểm này vào một lớp URL. Đối t ợng URL đ ợc t o ra bằng
một trong nh ng ph


ng thức kh i t o sau:

public URL(String spec) throws MalformedURLException

T o một đối t ợng URL từ địa chỉ định vị là một chuỗi.



public

URL(String


protocol,

String

host,

int

port,

String

file)

throws

MalformedURLException

Trang 12


Bài giảng Lập trình Mạng
T o một địa chỉ định vị tuy t đối với đ y đ nghi thức(protocol), máy ch (server), c ng(port),
đ

ng d n(file) tới t p tin c n l y trên máy ch .



public URL(String protocol, String host, String file) throws MalformedURLException


T o một địa chỉ định vị tuy t đối với đ y đ nghi thức(protocol), máy ch (server), đ

ng

d n(file) tới t p tin c n l y trên máy ch (bỏ qua thành ph n định vị c ng giao ti p, n u truy tìm
trang web theo nghi thức http thì c ng ch
Các ph


ng trình web server mặc định là 80).

ng thức hỗ trợ khác dùng cho lớp URL là:
public final Object getContent() throws IOException

l y v nội dung mà k t nối theo địa chỉ URL có đ ợc.


String getFile()

L y v tên t p tin hay tài li u nằm trong chuỗi địa chỉ URL có đ ợc.


String getHost()

L y tên máy ch (th


ng là thành ph n thức 2 c a chuỗi URL)


String getPort()

L y v số hi u c ng.


String getProtocol()

L y v tên giao thức(th


ng là thành ph n đ u tiên trong chuỗi URL)

String getRef()

L y v nội dung chuỗi tham kh o thêm trong chuỗi URL(đ ợc đặt sau d u # c a chuỗi)


Public final InputStream openStream() throws IOException

M lu ng nh p để đọc thông tin tr v từ máy ch
Ví d đo n mã sau đây dùng để l y v nội dung trang web index.htm từ máy ch java.sun.com:
try{
// Mở kết nối đến trang Web theo địa chỉ định vị URL
URL o = new URL(“ />// Tạo luồng nhập để đọc nội dung trang Web trả về từ máy chủ
BufferedReader inStream = new BufferedReader(new InputStreamReader(o.openStream()));
// In nội dung trang Web index.htm ra màn hình
String line;
while((line = in.readLine()) != null) {
Trang 13



Bài giảng Lập trình Mạng
System.out.println (line);
}
}catch (Exception e) {
// Quá trình mở và kết nối với trang web bị lỗi
System.out.println (e) ;
}

Trang 14


Bài giảng Lập trình Mạng

Ph n 2:
CH

Ngôn ng l p trình Java

NG 1:

T ng quan v Java
I. Lịch s Java
Chúng ta bi t đ n Sun Microsystems nh một nhà s n xu t ph n cứng với các tr m làm
vi c UNIX. Trên thực t , hãng Sun cũng phát triển ph n m m, đặc bi t n i ti ng là h đi u hành
Solaris và h thống t p tin m ng (Network File System - NFS). Năm 1990, Sun Microsystems bắt
đ u thực hi n dự án có tên gọi Green nhằm phát triển ph n m m trong các thi t bị đi n t dân
d ng. James Gosling, chuyên gia l p trình ph n m m m ng đ ợc giao trách nhi m thực hi n dự
án.
Ban đ u, Gosling s d ng C++ để vi t ph n m m đi u khiển, hiển thị số cho thi t bị nh

VCR (Video Cassette Recorder), PDA (Personal Digital Assistant). Nh ng ngay sau đó, Gosling
phát hi n ra rằng C++ không ph i là ngôn ng thích hợp cho công vi c này. Ngôn ng C++ đ
m m dẻo để đi u khiển h thống, nh ng nó l i d gây ra nh ng lỗi d n đ n treo h thống. Một
cách chi ti t h n, C++ xâm nh p trực ti p đ n tài nguyên h thống, yêu c u ng

i l p trình ph i

tự mình qu n lý các tài nguyên này. Đi u này t o thành một rào c n không cho C++ tr thành
một công c vi t các ph n m m có độ tin c y cao, tính t

ng thích lớn, đặc bi t trong vi c đi u

khiển các thi t bị đi n t dân d ng.
Gosling gi i quy t v n đ này bằng cách t o ra một ngôn ng l p trình mới có tên là Oak.
Ngôn ng này có cú pháp giống nh C++, nh ng bỏ qua các tính năng "nguy hiểm" c a C++ nh
truy c p trực ti p tài nguyên h thống, các phép toán với con trỏ, n p ch ng tác t . Oak đ ợc
thi t l p với m c đích t o tính t

ng thích cao (ch y trên nhi u lo i chip khác nhau), giúp các

nhà s n xu t thi t bị có thể thay đ i kiểu ph n cứng mà không ph i vi t l i ph n m m tr ớc đó.
Khi ngôn ng Oak tr

ng thành, World Wide Web cũng đang b ớc vào th i kỳ phát triển

m nh mẽ, và đội ngũ phát triển ph n m m c a Sun th y rằng đây cũng là ngôn ng đặc bi t thích
hợp cho Internet. Vào năm 1994, họ đã đ a ra WebRunner, một trình duy t Web vi t bằng Oak
(sau này trình duy t này đ ợc đ i tên thành HotJava và hi n nay v n đang đ ợc ti p t c phát
triển).
Cuối cùng, vào năm 1995, Oak đ ợc đ i tên thành Java (do m c đích th


ng m i) và đ a

ra trình di n t i SunWorld 95. Từ đó đ n nay, Java nhanh chóng phát triển. Th m chí tr ớc khi

Trang 15


Bài giảng Lập trình Mạng
trình dịch Java đ u tiên đ ợc đ a ra vào tháng 1 năm 1996, Java đã đ ợc coi là một chuẩn công
nghi p cho Internet.
Trong 6 tháng đ u năm 1996, nhi u nhà s n xu t ph n m m cũng nh ph n cứng đứng
đ u th giới đã mua b n quy n công ngh Java từ Sun, bao g m Adobe, Asymetrix, Borland,
IBM, Macromedia, Metrowerks, Microsoft, Novel, Oracle, Spyglass và Symantec... Các hãng
này sẽ k t hợp Java vào các s n phẩm c a họ nh : các ph n m m, h đi u hành, công c phát
triển.

II.Java là gì?
Java là công ngh cho phép t o ra các ph n m m phân tán (distributed software). Đây là
nh ng ph n m m đặt trên máy ch (server), đ ợc n p v qua k t nối m ng và thực hi n trên máy
khách (client).
Mặc dù đ ợc t o ra từ nh ng năm 70, Internet chỉ thực sự quy n rũ các doanh nghi p vào
nh ng năm 90 nh có sự ra đ i c a World Wide Web. Web cho phép ng

i s d ng truy c p trực

ti p các thông tin trên Internet mà không c n ph i học các l nh phức t p, cung c p thông tin trực
tuy n v nhi u lĩnh vực với hình nh, âm thanh,.. Sự ra đ i c a Java cho phép Web ti n xa h n
n a, bi n các trang Web tĩnh thành các ứng d ng sống động, có thể t
Nh ng lý do căn b n để mọi ng

+ Cho phép vi t các ch

ng tác với ng

i s d ng.

i chú ý đ n Java là:

ng trình m nh và tin c y.

+ Xây dựng ứng d ng ch y đ ợc trên h u h t các ph n cứng và h đi u hành khác nhau
(multi-platform).
+ Phân phối các ứng d ng trên m ng với độ b o m t và an toàn cao.
Nh v y, có thể nói Java đã thay đ i chức năng c a Internet, cũng giống nh Web đã thay đ i
cách ti p c n vào Internet c a chúng ta. Nói cách khác, Java đã chuyển m ng từ chỗ chỉ đ n
thu n cung c p thông tin và chia sẻ tài nguyên sang đóng vai trò h đi u hành. Đây chính là n n
móng cho phép xây dựng các máy tính m ng (Network Computer - NC) c a Oracle, IBM và Sun.

III.C u trúc của Java
Sức m nh Java có đ ợc chính là nh c u trúc c a nó. Java đ ợc thi t k nhằm m c đích tr ớc
h t là đ n gi n hoá công vi c c a ng

i l p trình. K đ n, do nhu c u ch y trên m ng, Java ph i

th t sự an toàn và n định, cũng nh có kh năng làm vi c đ ợc với nhi u kiểu ph n cứng, ph n
m m khác nhau. C u trúc ngôn ng Java thực sự đã đ m b o đ ợc t t c các tính năng trên.

Trang 16



Bài giảng Lập trình Mạng
Cũng nh các ngôn ng l p trình khác, Java c n một trình biên dịch để chuyển đ i mã l nh
cho ng

i đọc (mã ngu n) sang ứng d ng thực thi đ ợc. Các trình biên dịch thông th

Microsoft Visual C++ cho Windows 95 sẽ biên dịch ch
một lo i ph n cứng nh t định nào đó (trong tr
trình biên dịch Java l i chuyển ch

ng nh

ng trình sang mã l nh thực hi n trên

ng hợp này là mã l nh cho Intel x86). Trái l i,

ng trình ngu n Java thành các bytecode. Các bytecode này

chỉ có thể ch y đ ợc trên máy o Java (Java Virtual Machine -JVM).
L u ý: Hi n nay, máy o Java (JVM) mới đ ợc t o dựng bằng ph n m m chứ không ph i
ph n cứng. Sun Microsystems và một số công ty đi n t khác đang ti n hành nghiên cứu phát
triển chip picoJava, nhằm m c đích t o máy o Java bằng ph n cứng. Các chip này cho phép đ a
Java vào các thi t bị đi n t một cách d dàng h n, đ ng th i làm tăng tốc độ tối đa cho các JVM
vi t bằng ph n m m.
Bộ Java Developers Kit (JDK) do Sun cung c p bao g m một số ch

ng trình ti n ích cho

phép b n biên dịch, bắt lỗi và t o tài li u cho một ứng d ng Java. Hi n nay trên thị tr
có r t nhi u môi tr


ng đang

ng phát triển Java c a hãng thứ ba r t ti n lợi (nh Visual J++, Symantec

Cafe,..), nh ng t t c các ch

ng trình này đ u dựa trên n n JDK. Các trình ti n ích c a JDK bao

g m:
javac: Bộ biên dịch Java: Làm nhi m v chuyển mã ngu n Java sang bytecode.
java: Bộ thông dịch Java: Thực thi các ứng d ng Java trực ti p từ t p tin lớp (class).
appletviewer: Một trình thông dịch Java thực thi các Java applet từ t p tin HTML.
javadoc: T o tài li u d ng HTML từ mã ngu n cùng với các chú thích bên trong.
jdb (Java debuger): Cho phép b n thực hi n từng dòng trong ch

ng trình, đặt các điểm dừng

(breakpoint), xem giá trị các bi n.
javah: T o ra t p tin header c a C cho phép C gọi hàm Java hoặc ng ợc l i.
javap: Trình dịch ng ợc java (disassembler): Hiển thị các hàm và d li u truy c p đ ợc bên
trong một t p tin lớp đã dịch. Nó cũng cho phép hiển thị nghĩa c a bytecode.
Quá trình biên dịch Java nh sau: mã ngu n trong các t p tin *.java, qua trình biên dịch javac
đ ợc chuyển thành các bytecode. Bytecode nằm trong t p tin *.class, đ ợc gọi là t p tin lớp (b i
mỗi t p tin chứa một lớp riêng bi t c a Java). Các ứng d ng Java có thể bao g m nhi u lớp khác
nhau.
Chú ý: Một lớp (class) c a Java cũng giống h t nh một lớp trong C++. Lớp chính là các bi n
d li u và th t c k t hợp với nhau thành một khối.

Trang 17



Bài giảng Lập trình Mạng
ng trình Java, máy o Java s d ng trình n p lớp (class loader) để đọc các

Khi thực hi n ch

bytecode từ đĩa hoặc k t nối m ng. Các lớp đ ợc n p sẽ ph i đi qua trình kiểm tra lớp (class
verifier) để chắc chắn rằng chúng sẽ không sinh ra các lỗi nh h

ng đ n h thống khi thực thi.

Quá trình kiểm tra này làm tăng th i gian n p một lớp, tuy nhiên nó chỉ ph i thực hi n có một l n
mà thôi.
Ph n thực hi n (execution unit) trong máy o Java sẽ thực thi các l nh quy định trong từng
bytecode. Bộ ph n thực thi đ n gi n nh t là một trình thông dịch, chuyển đ i từng bytecode sang
các th t c c n làm trên từng h thống. Cách này r t ch m vì trình thông dịch luôn ph i tra nghĩa
c a bytecode mà nó thực thi. Để khắc ph c nh ợc điểm này, ng

i ta đ a ra trình biên dịch Just-

in-time (JIT): Quá trình chuyển đ i từ bytecode sang mã l nh riêng c a từng h thống sẽ đ ợc
làm luôn một l n ngay khi n p ch
Ch

ng trình, do đó tăng đ ợc tốc độ đáng kể.

ng trình vi t bằng Java có thể là ứng d ng riêng bi t (stand-alone application), hay là

ứng d ng kí sinh trên Web (applet) hoặc đ ng th i c hai. Applet là ch


ng trình đ ợc nhúng

trong trang Web, đ ợc đọc và thực hi n b i trình duy t hỗ trợ Java (Java-enabled Web browser).
Khi trình duy t đọc tới trang Web này, applet sẽ đ ợc thực thi. Trái l i, một ứng d ng Java riêng
bi t đ ợc ch y bằng dòng l nh (java Tên-lớp-c n-thực-thi Tham-số), không c n thông qua trình
duy t Web.
Một trình duy t Web hỗ trợ Java (Java-enabled browser) có máy o Java riêng. Hi n nay, các
trình duy t hỗ trợ Java nh v y khá nhi u: Netscape 2.0 tr lên, HotJava, Microsoft Internet
Explorer 3.0 (b n beta 2 tr lên),... Các trang Web nhúng Java applet có chứa đ

ng d n kiểu

URL tới t p tin lớp chính c a applet đó. Trình duy t chỉ vi c kh i động máy o Java và cung c p
cho trình n p lớp đ

ng d n này. Chú ý rằng mỗi lớp đ u đ a ra tên c a các lớp ph nó c n, do

đó trình n p lớp ph i n p một số lớp ph khác tr ớc khi thực hi n ch

ng trình.

IV.Các đặc tính chính của Java
Trong ph n này, chúng ta sẽ điểm qua b y đặc tính quan trọng khi n Java tr thành một công
c phát triển m nh, tin c y.

IV.1.An ninh
An ninh là một v n đ khó khăn hàng đ u mà ng

i l p trình m ng gặp ph i: Ng


i s d ng

luôn e ng i hai đi u: Thứ nh t, thông tin họ g i đi trên m ng có thể bị đọc lén và thứ hai, h
thống c a họ có thể bị xâm nh p và phá ho i. C u trúc an ninh c a Java nhằm vào gi i quy t
đ ng th i hai v n đ trên.

Trang 18


Bài giảng Lập trình Mạng
C u trúc an ninh c a Java dựa vào ba thành ph n: Trình n p lớp, trình kiểm tra lớp và trình
qu n lý an ninh (SecurityManager). Chúng ta đã bi t rằng trình kiểm tra lớp làm nhi m v đ m
b o chắc chắn ch
h

ng trình Java đ ợc biên dịch đúng đắn, khi thực hi n sẽ không gây lỗi nh

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

hàng.
Bên c nh đó, trình n p lớp phân bi t rõ lớp nào đ n từ m ng, lớp nào nằm ngay trên máy
khách hàng. Đi u này ngăn lớp tới từ m ng "gi d ng" một lớp trên máy khách hàng để thực hi n
các tác v bị c m đối với lớp này. Ngoài ra nó còn giúp tách bi t ho t động c a các lớp khác
nhau tới từ các máy ch khác nhau.
Trình qu n lý an ninh kiểm soát các ho t động một máy o Java đ ợc quy n làm dới các đi u
ki n khác nhau. Một ví d r t c b n là ho t động đọc/ghi t p tin (file I/O) đ ợc qu n lý chặt chẽ
b i trình qu n lý an ninh: Các applet chỉ có quy n đọc/ghi các t p tin t i máy server chứa nó mà
thôi! Tuy nhiên, trình qu n lý an ninh cũng là một lớp trong Java, do đó chúng ta có thể vi t một
lớp an ninh riêng cho mình bằng cách t o một lớp d n xu t từ lớp SecurityManager.


IV.2.Giao di n l p trình ứng d ng chuẩn - Core API
Java cung c p cho ng

i l p trình một th vi n các hàm chuẩn, đó là Core API. Các hàm

chuẩn này đ ợc đặt trong các gói (package) - là t p hợp c a các lớp có mối quan h với nhau (ví
d nh gói java.awt chứa các lớp Abstract Windowing Toolkit, giúp ng

i l p trình xây dựng

ứng d ng với giao di n GUI trên các platform khác nhau).

IV.3.T

ng thích v i nhi u kiểu ph n cứng

Mã bytecode c a Java có thể ch y trên h u nh mọi lo i ph n cứng và h đi u hành hi n nay
nh : PC, Macintosh... cũng nh các máy khác có ch y máy o Java. Một điểm n a là th vi n
các th t c chuẩn Java có chứa đ y đ các hàm có thể dùng chung cho các platform khác nhau.

IV.4.Đặc tính động và phân tán
H đi u hành Windows cho phép các ch

ng trình s d ng chung và n p tự động các th

vi n liên k t động DLL. Chia sẻ t p tin DLL làm gi m dung l ợng bộ nhớ cũng nh đĩa c n dùng
và tăng tính c u trúc c a ch
c n và nhi u ch
ph n c a ch


IV.5.H

ng trình. Java cũng có đặc tính này: các lớp đ ợc n p tự động khi

ng trình có thể dùng chung một lớp. Nó còn hỗ trợ đặc tính phân tán, tức là các

ng trình có thể nằm trên máy ch l n trên máy khách hàng.

ng đối t

ng

L p trình h ớng đối t ợng (OOP) là ph

ng thức vi t các ứng d ng d b o trì, d nâng c p

và đặc bi t là có thể tái s d ng các mã l nh. Java là một ngôn ng h ớng đối t ợng, do đó nó có
Trang 19


Bài giảng Lập trình Mạng
đ y đ các đặc tính trên. Ngoài ra, th vi n lớp Java cung c p khá đ y đ cho ng

i l p trình để

bắt đ u một dự án mới.

IV.6.Đa lu ng (multi-threads)
Các ứng d ng vi t bằng Java có thể có nhi u ti n trình đ ợc x lý cùng một lúc. Một ứng

d ng đ n lu ng chỉ có thể thực hi n một tác v t i một th i điểm: Gi s ứng d ng đang b n l y
từ trên m ng xuống một t p tin m t vài phút, trong th i gian này ứng d ng không thể làm các
vi c khác nh vẽ l i màn hình... Với ứng d ng vi t bằng Java, b n có thể t o hai ti n trình song
song làm vi c: một ti n trình n p t p tin, một ti n trình khác làm nhi m v c p nh t màn hình.

IV.7.Qu n lý bộ nh và quá trình thu dọn 'rác'
Qu n lý bộ nhớ là một v n đ khá phức t p đối với C và C++. Trong th i gian thực hi n
ch

ng trình, ng

i l p trình chịu trách nhi m kh i t o các vùng nhớ, sau khi dùng xong l i gi i

phóng chúng. Chỉ c n một lỗi nhỏ trong đó cũng có thể làm c n ki t tài nguyên hay d n đ n treo
h thống. Java đã vứt bỏ gánh nặng này cho ng
ch

i l p trình: Các vùng nhớ đ ợc t o ra trong

ng trình sẽ tự động đ ợc gi i phóng thông qua quá trình thu dọn "rác" (Garbage Collection).

Các vùng nhớ tự động đ ợc gi i phóng n u nh nó không đ ợc quy chi u đ n b i b t cứ đối tợng đang ho t động nào.
Các qu n lý bộ nhớ c a Java c ng cố thêm tính an ninh c a các máy o. Trong C và C++,
ng

i l p trình có thể truy c p đ n h thống thông qua con trỏ (pointer). Với Java, phép toán với

con trỏ bị c m, do đó con trỏ luôn chỉ đ n d li u c n thi t c a ứng d ng trên máy o, ngăn ngừa
ứng d ng truy xu t đ n tài nguyên bên ngoài máy o.
C u trúc và các đặc tính trên đây c a Java cho th y Java có nh ng điểm m nh và y u riêng.

Tuy nhiên, chúng ta có thể tin rằng, trong t

ng lai, Java sẽ d n d n hoàn thi n nh ng nh ợc

điểm, phát triển và ti p t c làm thay đ i bộ mặt c a Internet cũng nh Intranet.

Trang 20


Bài giảng Lập trình Mạng

Kiểm tra sự ti n bộ
1. B n có thể vi t các ch

ng trình d ng th t c bằng Java. Đúng/Sai

2. Java là ngôn ng có kiểu d li u chặt chẽ. Đúng/Sai
3. ...........................là ch

ng trình Java ch y độc l p, và s d ng giao di n đ họa để ng

is

d ng nh p d li u.
4. ...........................s d ng JDBC API để k t nối c s d li u.
5. ..........................hiểu một dòng các l nh máy tính trừu t ợng.
6. Coalescing và Compaction là gì?
7. L nh ............... đ ợc s d ng để dịch file mã ngu n .java.
8. Lớp ......... ph i là lớp cha c a các applet, applet là ch


ng có thể nhúng vào trang Web hay

ch y bằng Java AppletViewer.

Bài t p
1. Cài đặt Java 2
2. Gõ các l nh sau t i d u nhắc và li t kê các tham số khác nhau c a chúng:
Ü javac
Ü java

Trang 21


Bài giảng Lập trình Mạng
CH

NG 2:

Các thành ph n c b n của ngôn ng l p trình java
Văn ph m Java chỉ định cách vi t nh sau:
- L i chú thích: Đ ợc thêm vào b i ng

i l p trình với m c đích gi i thích.

- Các câu l nh: Mỗi l nh là dòng đ n c a ch

ng trình.

- Khối l nh: Đặt các câu l nh nhóm l i cùng với nhau nh một khối
- C u trúc file: Các bộ ph n c u thành c a một file Java ngu n và l nh là đ ợc xác định rõ.

- Các từ khóa: Các từ đ ợc định nghĩa tr ớc trong ngôn ng Java (không đ ợc s d ng nh
danh hi u).
- Danh hi u: Các tên b n đặt ra cho các lớp, các bi n và các hàm. Danh hi u không h n ch
các kí tự theo chỉ định, nh ng ch a ph i đ ợc s d ng tùy ý, có vài qui ớc cho danh hi u.
- Hằng (literals): Các giá trị hằng đ ợc vi t một cách khác nhau tùy thuộc vào kiểu d li u.
Ví d : để phân bi t các kí tự "123" với số 123.
- Biểu thức: Sự k t hợp nhi u mối quan h để t o ra một giá trị d li u.
- Toán t : Các toán t đ ợc thực hi n nh phép cộng, trừ, nhân, các toán t toán học và
không toán học khác.
Mỗi khái ni m văn ph m trên sẽ đ ợc mô t trong các ph n sau:

I.Ghi chú (Comment)
Các l i chú thích có thể đ ợc thêm vào trong mã ngu n Java bằng hai cách giống nh trong
C++. Cách thứ nh t bắt đ u l i chú thích với d u /* và k t thúc */ cho phép đặt nhi u dòng chú
thích trong cặp d u trên.
Ví d :
a = b + c;
/* Here is comment which
extends across two lines
*/

Nói chung b n không thể đặt các chú thích trong chú thích
Ví d :
/* Here is a comment which /* a comment within a comment*/
extends across two line*/

Trang 22


Bài giảng Lập trình Mạng

Trong ví d này chú thích đ u tiên k t thúc tr ớc bằng d u */

dòng hai không bắt đ u m

d u chú thích. K t qu c a câu này là lỗi trong quá trình biên dịch.
Nhi u dòng chú thích có ý nghĩa đặc bi t cho ti n ích javadoc khi kí hi u đ u tiên bên trong
d u chú thích là một d u * .
Ví d :
a = b+ c;
/* * This comment has

epecial meaning for the javadoc

unitily.It will be part of documenttation
automaticlly generated By the javadoc program
*/

Cách thứ hai đánh d u // và ghi l i chú thích sau đó trên cùng một dòng.
Ví d :
a = b + c;//this comment extends to the end of this line of text

Nh ng chú thích này có thể đặt trong cặp d u chú thích /* */.
Nh v y, ghi chú nhằm giúp cho ng
khi c n b sung, s a ch a nâng c p ch
Có 3 lo i ghi chú trong ch
Bắt đ u

K t thúc

/*


*/

i l p trình d dàng nhớ l i quá trình suy nghĩ nh t là
ng trình

ng trình Java:
M c đích

Đo n code bị giới h n là ph n ghi chú.
Ghi chú trên 1 dòng, trình biên dịch bỏ qua từ // đ n cuối dòng

//
/**

*/

Ghi chú dành cho javadoc, trình biên dịch bỏ qua

II.Câu l nh và khối l nh
II.1.Câu l nh
Một câu l nh trong Java đ ợc k t thúc bằng 1 d u ch m phẩy (;)
Thí d :
Dòng

a = b + c + d + e + f + g;

Cũng giống nh a = b + c + d +
e + f + g;


Kho ng trống giới h n gi a các l nh có thể bao g m b t kì số kí tự trống nào. Các kí tự trống
là các kho ng trống, các d u tab, các d u v đ u dòng, xuống dòng.
Chú ý: Trên h thống UNIX và Masintosh, mỗi dòng văn b n th
xuống dòng (mã ASCII 13). Trong Windows, các dòng văn b n th

ng k t thúc b i ký tự

ng không giới h n b i các
Trang 23


Bài giảng Lập trình Mạng
ký tự xuống dòng, v đ u dòng (CR/CF hay mã ASCII là 13/10). Java biên dịch nh n ra các ký tự
trên cũng nh các ký tự trống và không quan tâm đ n nh ng dòng văn b n đã k t thúc.

II.2.Khối l nh
Các câu l nh đ n có thể nhóm l i thành các khối b i v y một khối l nh có thể d dàng kiểm
soát sự thực hi n c a nhi u câu l nh khác. Bộ l nh c a Java không giới h n trong cặp ngoặc nhọn
{và }. B n đã nhìn th y các khối l nh đ ợc dùng để t o thành nhóm các l nh thuộc một lớp:
class Flight {

float

int

altitude;

int

heading;


int

speed;

float

latitude;

longintude;

//change the flight's heading by angle degree
void

turnFlight (int angle){
heading

= (heading + angle) % 360 ;

// make sure angle is in the range 0-359 degrees
if (heading<0)
heading = heading + 360 ;
} //end turnFlight
} //end Flight

Nh b n th y các khối l nh có thể đặt trong các khối khác
T ng số các kho ng trống đặt gi a các d u ngoặc nhọn và các câu l nh là tùy ý nh ng cũng
có qui ớc là d u ngoặc nhọn bên trái ph i đặt sau một dòng (hay bắt đ u một dòng ti p theo),
d u ngoặc nhọn bên ph i là thuộc chính dòng đó và chỗ th t đ u dòng th


ng dùng để làm n i

b t nhóm l nh.

III.T p ký tự dùng trong JAVA
Mọi ngôn ng đ u đ ợc xây dựng từ một bộ ký tự nào đó. Các ký tự đ ợc nhóm l i theo
nhi u cách để t o nên các từ. Đ n l ợt mình các từ l i đ ợc liên k t theo một quy tắc nào đó để
t o nên các câu l nh, từ khóa, tên...
Ngôn ng JAVA đ ợc xây dựng trên bộ ký tự sau :
26 ch cái hoa : A..Z và 26 ch cái th

ng a..z.

10 ch số : 0..9
Các ký hi u toán học : +, -, *, /, %, =, ()...
D u nối : _
Các ký hi u đặc bi t khác : ;, :, {}, [ ], ?, \, &, |, #, $...
Trang 24


Bài giảng Lập trình Mạng
Ngoài ra ngôn ng JAVA còn dùng bộ ký tự Unicode. Đó là một bộ ký tự, nó không chỉ bao
g m nh ng ký tự đã có trong bộ ký tự ASCCI mà còn có vài tri u ký tự khác t

ng ứng với h u

h t các b ng ch cái trên th giới.

IV.Từ khóa và tên
IV.1.Tên

Cũng t

ng tự nh các ngôn ng l p trình khác nh C, C++, ngôn ng l p trình JAVA cũng

quy định cách đặt tên nh sau :
Tên có thể đ ợc bắt đ u bằng một ký tự, hoặc d u $, _... nh ng không thể bắt đ u bằng một
số và không có d u cách trong tên. Ngoài ra nó còn có thể dùng bộ ký tự Unicode để đặt tên.
JAVA phân bi t ch hoa và ch th

ng.

IV.2.Từ khóa
Từ khóa là nh ng từ có ý nghĩa xác định. Th

ng đ ợc s d ng để khai báo các kiểu d li u,

để vi t các toán t và các câu l nh.
Sau đây li t kê một số từ khóa c a JAVA
abstract

case

const

else

for

boolean


cast

continue

extends

future

break

catch

default

final

generic

byte

char

do

finally

goto

byvalue


class

double

float

implements

inteface

operator

public

super

thows

volatile

import

long

rest

outer

swicth


transient

while

inner

native

package

return

synchronized

try

instanceof

new

private

short

this

var

int


null

protected

static

throw

void

Chú ý:
-

Không đ ợc dùng từ khóa để đặt tên cho hằng, bi n, m ng, hàm...
Từ khóa ph i vi t bằng ch th ng

V.Kiểu d li u
Mỗi bi n ph i có một kiểu d li u. Kiểu d li u c a bi n xác định các giá trị mà bi n có thể
chứa đựng và các toán t thao tác trên chúng.

Trang 25


×