Tên dé tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong JavaTóm tắt đề tài Tên đề tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình
Trang 1TRƯỜNG ĐẠI HỌC AN GIANG
KHOA KY THUAT - CÔNG NGHỆ - MÔI TRƯỜNG
NGUYEN PHU LỘC
LUẬN VAN TOT NGHIỆP NGANH CỬ NHAN TIN HOC
TÌM HIỂU LẬP TRINH TRUYEN THONG VA UNG DUNG
XÂY DUNG CHUONG TRINH CHAT TRONG JAVA
Trang 2Lời cảm ơn
Em xin chân thành cảm ơn khoa Kỹ Thuật - Công Nghệ - Môi Trường đã tạo điều kiện
cho em thực hiện dé tài.
Em xin chân thành cảm ơn thay Đỗ Thanh Cao — người trực tiếp hướng dẫn, truyền
đạt cho em những kinh nghiệm quý báu để em hoàn thành đề tài này.
Em xin chân thành cảm ơn quý thầy cô trong khoa đã trang bị những kiến thức quý
báu trong những năm vừa qua.
Em xin gởi lời biệt ơn sâu sắc đên ông bà, cha mẹ, anh chị và bạn bè đã ủng hộ, giúp
đỡ và động viên em trong suốt thời gian học tập và nghiên cứu.
Mặc dù đã cố gắng để hoàn thành đề tài nhưng chắc chắn không tranh khỏi những
thiêu sót Em kính mong nhận được sự thông cảm và tận tình chỉ bảo của quý thây cô và các bạn.
An Giang, ngày 15 tháng 05 năm 2006
Sinh viên thực hiện
Nguyễn Phii Lộc
Trang 36u 8/8 4 da Trang 1
Phan A: Eo gõ: [Ệ KHUVẾT saueaanasaatrdiinottdtiitnioasttinttdgndi Trang 2
I Tổng quan về lập trình truyền thông . -c-<cccccsccss Trang 2
4 Cơ chế giao tiếp liên quá trình -¿-¿-¿¿52 522222232232212212222xzrrei Trang 2
2 Phân loại cơ chế giao tiếp liễn quá WỈNH soecoaonaaesesnaneoay.-aaaasznn Trang 3
3 Mô hình Client - Sewer :::::c:cccsccccsiiixbS6 0A tt 10160304480 0066400402808 0485 Trang 4 3.1 GiGi tHIGU nnŨnŨŨŨnỪẶÀ Trang 4
3.2 CO CHE Gide tip oo ceeceeccecccecscesseseeseseseeescsessssseseseseseseseecsescseeeseseseseess Trang 5
3.2.1 Chế độ nghẽn oo eeeeecccccscececscsscscecseeccscsesevscseseeecaeseeesseststsecseeteeves Trang 5
3.2.2 Chế độ không nghến S3 32v 22121212111 xe Trang 5
A, Gáo kiểu kiến trúo của chương TT saueaseiaaidibddniiiiadiriaasaaaasanaaaa Trang 6
44 Kiện trúc đợi ÔNG nanoaaaootiiigliGGSGGIGGHISIDEHIDGi00000000038g3quig Trang 68:2 Kiện TEE N8lfổNH, ì.àe ecceienirrinii24202-0/0 Trang 7
4.2.2 Nà nh on ˆ Trang 84.3 Kiến trúc đa tầng, :21 1212222112111 1111011111111 re Trang 9
5 Giới thiệu một số kĩ thuật lập trình mạng trong Java Trang 9
8:1; Gió† thiệu SO€K€Ẩossdtinaitbaseiilttitil80S04409558584449659044414830008006061014908 Trang 9
82111: GIỚI HIẾU hang gdogggh 2 UGHGIIGDGNGHRRQDOIGGRIEENVEEEGSEMESMNIRGGEIYGMNRSSĐim Trang 9
5.1.2 Số hiệu CONG (pOr) - ¿1 t2 tt 222 1812122221112 10151 111x111 xree Trang 9
5.1.3 Địa chi IP (IP Address) - - HH he Trang 10 5.2 Servlet/Java Server Pages (JSP) HH Trang 11 G5 AD[ĐĂcsecintrnddttit TT 11116 10001169601101200445E9906056830010100708/0000015140035981ivi8140085081/5 Trang 11
5.4 Remote Methods Invocation (RMI) Sa Trang 12
Ik NHôñ ngữ AVA saecpiaaagaissgititdiitsgituitiloigiESj8ES4SSEGS1432x104S-n3asaae Trang 13
1 Thiết kế giao diện người dùng (User Interface) -. -:-:s+¿ Trang 13
r0 0a Trang 13
3 Các luồng nhập xuất -c2: 321222222523 1321115511171 22112 cve2 Trang 13
4; GAD TRÌNHSGINO(SOTÔtssesosreensaenprrmsattntititnlbngutlGBHiNHGS0BBI2E900814gHT8n10010004012/6199012./004048 Trang 14
Phần B: Mô tả chương trình: -c-cccsce- Trang 15
len 1 ẽ Trang 15
Trang 4II Mô hình hơạt GONG ‹‹‹:-::::5:ó-:c¡::2ccccco cúi tá g06142044444316833ã 1á 688%1Ä4ãx8gãaa8uáá Trang 15
tl, TSN TAC ENE NING qruqaaatgtgaGtaGttitullidtidiiajbsadituidaeiaeaaal Trang 16
4 Phần Client L2 1 12211 121222212111011111 1011101 8 1E Trang 16
IV Mô tả chỉ tiết chức năng cccccceeeeerrtrrrtirrsrrrkrrrrsrsree Trang 17
1 Chức năng chính (sendMessage, sendFile) Trang 17 2: CHOC NANG PHÙ assesses renee Trang 23
BG HiE TÔI di od bo di bu gokul lii8QIGNGQHDNGRGRSNGNHRIGaik Trang 23
2.2 Phần Server L Lt2 1212121111111 221212121110111111111 210k Trang 23
3 Phần lưu trữP c c St xSx 12121 EE H11 1181711511111 1H11 Hà rưệu Trang 24
Ý_.Giao GIG MN secccccevsssensssssevcesscecesescnsdenesecscaresteensersnnneresonasees ravseknnssinnn rvssasaeTrang 25
PARENT DEN) nueonesetptetgtrirrof00S0000002100000000001210030000000190030005000-ĐÖU0EEDNHORĐEDCSTSTS000E Trang 25
5 Phần SQIVE! toosoooooioocecdEGIGEDGDGEIGESSSIGGSAAGIAAGIGSSEURSSGGG0G3Đ003104gu3 Trang 28
Phần C: Kết luận -c 22ceccccceerirrrttrrrrrrrrrrrrrrescee Trang 30
I Kết quả đạt được qua đợt thực tập c-cccceccceriririreirrsesrsee Trang 30
Tài liệu tham khảo c2 122011111 2 211118221 1111 ng vn ng vn Trang 31
Trang 5Tên dé tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
Tóm tắt đề tài
Tên đề tài:
Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
Giáo viên hướng dẫn: — Kỹ sư Đỗ Thanh Cao
Sinh viên thực hiện: Nguyễn Phú Lộc
- _ Xét trên một phạm vi rộng (trên thé giới), nó giúp cho một người có thẻ liên lạc, trò
chuyện với một người khác một cách dễ dàng mặc dù hai người đang ở rât xa nhau (hai người đang ở các quoc gia khác nhau, các châu lục khác nhau, ) Tuy nhiên để có thể đáp ứng được nhu cau trên thì đòi hỏi người sử dụng phải kết nối vào mạng Internet và
cùng với sự hỗ trợ của một số chương trình như: Yahoo Messenger, Google Talk,
những chương trình nỗi tiếng nhất trên thé giới hiện nay
- - Xét trên một phạm vi nhỏ hẹp (trong một văn phòng, cơ quan chẳng hạn), vì vấn đề
bảo mật hay một sô lý do nào đó mà người dùng không nối kết Internet hoặc không sử
dụng các dịch vụ chat có sẵn, nhưng vẫn có thể giao tiếp, trò chuyện với nhau thông qua
mạng cục bộ (Intranet, LAN) Việc tự xây dựng một chương trình chat sẽ phục vụ tốt cho
yêu cầu vừa nêu
A x A ^* ,Ã Ậ Fa A tA + ` sh A A L!Ã z , Ayr
- Đây là một cơ hội tot dé em có thé nghiên cứu, tìm hiéu một sô kiên thức cơ ban về ki
thuật lập trình mạng mà chủ yêu là lập trình socket.
ˆ x
Yéu cau:
- Néulén được hướng dé tiép cận với lập trình truyền thông trong Java.
- _ Tìm hiểu về cách thức truyền một thông điệp từ máy này sang máy khác
- Tìm hiểu về mô hình ứng dụng Client/Server
- Viết chương trình DEMO
Môi trường thực hiện:
- Phan mêm Eclipse 3.0.
- Phan mém NetBean.
Hệ thống:
- Phải có bộJDK 1.4 hoặc các phiên bản sau đó.
- _ Bộ gõ tiếng việt Unikey 3.5 hoặc các phiên bản sau đó
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang |
Trang 6Tên dé tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
Phan A: Cơ sở ly thuyết
Tổng quan về Lập trình truyền thông
1 _ Cơ chế giao tiếp liên quá trình
Truyền thông là một khái niệm dùng để chỉ sự giao tiếp giữa hai hay nhiều thực
thể trong một hệ thống nào đó Nếu hệ thống 1mà ta xem là xã hội loài người thì đó là sự
trao đổi giữa người với người trong cuộc sống thông qua các phương tiện truyền tải
thông tin khác như không khí (nói chuyện trực tiếp), hệ thống điện thoại, sách báo, mạng máy tính,
Nếu hệ thống mà chúng ta đang xét là một hệ thống máy tính hay một hệ thống
mạng thì truyền thông có thé được phân thành hai mức:
% Mirc phan cứng: là sự giao tiếp, trao đổi thông tin giữa các bộ phận vật lý
cấu thành nên hệ thống máy tính như CPU, bộ nhớ, thiết bị vào ra, card giaotiếp mạng, nhờ vào các phương tiện truyền thông như hệ thống BUS nội, hệ
thông BUS vào ra hay các dây cáp mạng
“ Mức phan mém: là sự giao tiếp, trao đổi thông tin giữa các thành phần bên
trong của một chương trình hay giữa các chương trình với nhau thông qua các
cơ chế truyền thông được hỗ trợ bởi các hệ điều hành, hệ điều hành mạng.
Trong các hệ thống máy tính đơn nhiệm (monotasking) cổ điển, ví dụ MS-DOS,
tại một thời điểm chỉ cho phép tổn tại một quá trình Việc giao tiép, trao déi thong tin chỉ diễn ra trong phạm vi của một chương trình Dé là sự giao tiếp giữa các thủ tục dưới
hình thức chia sẽ các biến toàn cục, hay bằng cách truyền các tham số khi gọi hàm, thủ
tục hay bằng giá trị trả về của một ham, Ngược lại, trong các hệ thống đa nhiệm
(multitasking) có nhiều quá trình tồn tại sông Song nhau, môi quá trìnhđược thực hiện
trong một không gian địa chỉ (Address space) riêng biệt Việc giao tiếp giữa các quá
trình muốn thực hiện được đòi hỏi phải có những tiện ích hỗ trợ bởi hệ điều hành, hệ
điều hành mạng Các tiện ích này thường được gọi với cái tên là Cơ chế giao tiếp liên
quá trình (IPC - Inter-Process Communication).
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 2
Trang 7Tên đề tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
A Ao .Ä +A ⁄ so
2 Phân loụi cơ chế giao tiêp liên qua trình
Cơ chế giao tiếp liên quá trình hỗ trợ bởi hệ điều hành đa nhiệm có thể được chia
làm hai loại:
Loại I: Cơ chế giao tiếp liên quá trình hỗ trợ giao tiếp giữa các quá trình
trên cùng một máy tính.
Hình 1: Cơ chế giao tiếp liên quá trình loại I
s* Loại 2: Co chế giao tiếp liên quá trình hỗ trợ giao tiếp giữa các quá trình
năm trên các máy tính khác nhau.
Hình 2: Cơ chế giao tiếp liên quá trình loại 2
Trong cơ chế giao tiếp liên quá trình trên cùng một máy, dit liệu trao đổi qua lạigiữa các quá trình phải đi xuyên qua hạt nhân (kernel) của hệ điều hành Đó có thể là
một vùng nhớ dùng chung cho các quá trình đã được qui định trước bởi hệ điều hành,
hay một tập tin trên đĩa được quản lý bởi hệ điều hành trong đó một quá trình sẽ ghi dit
liệu vào, quá trình khác đọc dữ liệu ra,
Trong cơ chế giao tiếp liên quá trình trên các máy tính khác nhau, đữ liệu trao đổi
giữa các quá trình không những phải đi qua hạt nhân như cơ chế giao tiếp liên quá trình
trên một máy tính mà hơn thế các hạt nhân của các máy có liên quan, phải hiệu nhau.
Nói cách khác các hạt nhân phải thỏa thuận trước với nhau về các qui tắc trao đổi thông tin giữa chúng Thông thường ta gọi các qui tắc này là các giao thức (Protocol).
Sinh viên thực hiện: Nguyễn Phú Lộc — DTH021691 Trang 3
Trang 8a Agxs ` ak A ` x a ee A `
Tên dé tai: Tìm hiệu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
3 Mô hình Client — Server
3.1 Giới thiệu
Trong mô hình này, chương trình ứng dụng được chia thành hai phân:
trình này được gọi là các i
trinh phuc vu hay Server Y
Reply execution
Reply message
- Một số quá trình
khác có yêu cầu sử dụng _——————— Qua trình đang thực thi
các dịch vụ do các server - Quá trình đang bị nghẽn cung cap được gọi là các
trình khách hay Client Hình 3: Mô hình Client - Server
Việc giao tiếp giữa Client và Server được thực hiện dưới hình thức trao đôi
các thông điệp (Message) Để được phục vụ, Client sẽ gởi một thông điệp yêu cầu(Request Message) mo ta về công việc muốn Server thực hiện Khi nhận được
thông điệp yêu cầu, Server tiền hành phân tích để xác định công việc cần phải thực
thi Nếu việc thực hiện yêu cầu này có sinh ra kết quả trả về, Server sẽ gởi nó cho
Client trong một thông điệp trả lời (Reply Message) Dạng thức (format) và ý
nghĩa của các thông điệp trao đổi giữa Client và Server được qui định rõ bởi giao
thức (protocol) của ứng dụng.
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 4
Trang 9Tên dé tài: Tìm hiểu lập trình truyền thông và ứng dung xây dựng chương trình chat trong Java
3.2 Các cơ chế giao tiếp
Quá trình giao tiếp giữa Client va Server có thé diễn ra theo hai chế độ nghẽn
(Blocked) hoặc không nghẽn (Not Blocked).
° 3.2.1 Chế độ nghẽn (Blocked):
Trong chế độ
: này, khi quá trình
client hay server phát
ra lệnh gởi dữ liệu,
(thông thường bằng
lệnh send) , sự thực i thi của nó sẽ bi tam :
dừng cho đến khi quá
Tương tự cho trường hợp nhận dữ
liệu, nếu quá trình
nào đó, client hay
server, phát ra lệnh —————_ Quá trình đang thực thi
nhận dữ liệu, mà ở
thời điểm đó chưa có
dữ liệu gởi đến, sự Hình 4: Chế độ giao tiếp nghẽn
thực thi của nó cũng
tạm dừng cho đến khi có dữ liệu gởi đến
3.2.2 Chế độ không nghẽn (Non Blocked):
Trong chế độ này, khi
quá trình client hay server Client Server
phát ra lệnh gởi dữ liệu, sự
thực thi của nó vẫn được tiếp
tục mà không quan tâm đến
việc có quá trình nào phat ra = SendQ)
dữ liệu đến) Sự thực thi của Quá trình đang thực thi
quá trình vẫn được tiếp tục ‘
— n Quá trình đang bị nghẽnHình 5: Chế độ giao tiếp không nghẽn
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 5
Trang 10Tên dé tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
Trong thực tế cần chú ý đến chế độ giao tiếp nghẽn khi lập trình, vì nó
có thé dan đến trường hợp chương trình bị "treo" do sô lan gởi và nhận dữ
liệu không bang nhau giữa hai bên giao tiếp.
, +k eA * 2 `
4 Các kiêu kiên trúc của chương trình
O mức lý luận, các chức năng mà một chương trình ứng dụng thực hiện có thé xếp
thành một trong 3 loại sau:
- Chie năng thực hiện việc tương tác với người dùng như tao các giao diện
nhập liệu hay in các báo cáo thông báo ra màn hình Các chức năng này được
gọi chung là Dịch vụ giao diện người đùng (User Interface Service).
- Cac chức năng tính toán các dữ liệu, xử lý thông tin theo những qui luật (rule), giải thuật được qui định bởi van dé mà ứng dụng giải quyết Các chức năng này được gọi chung là Dịch vụ nghiệp vụ (Business Rule Service).
- - Trong quá trình tính toán, chương trình ứng dụng cần truy vấn đến các
thông tin đã có được lưu trên đĩa cứng hay trong các cơ sở dữ liệu Cũng như cần thiết phải lưu lại các kết quả tính toán được để sử dụng về sau Các chức năng này được gọi chung là Dịch vụ lưu trữ (Data Storage Service).
Ở mức vật lý, các chức năng này có thể được cài đặt vào một hay nhiều tập tin
thực thi hình thành các kiêu kiên trúc chương trình khác nhau Cho dén thời điểm hiện nay, người ta chia kiên trúc của chương trình thành 3 loại được trình bày tiếp theo sau.
4.1 Kiến trúc đơn tầng (Single-Tier Architecture)
Trong kiểu kiến trúc này, cả 3 thành phần của chương trình ứng dụng (User
Interface, Business Rule, Data Storage) déu được tích hợp vào một tập tin thực thi.
Vi du: Bkav, D32, Winword,
Các ứng dung kiêu này chỉ được thực thi trên một máy tính.
Hình 6: Kiến trúc chương trình đơn tang
nao đó (Business Rule).
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 6
Trang 11Tên dé tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
> Viéc bảo trì, nâng cấp an ban mới là một công việc cực kỳ nặng nề vì
ta phải thực hiện việc cài đặt trên tat cả các máy tính.
> Trong kiểu này, mỗi máy tính duy trì một cơ sở dữ liệu riêng cho nên
rat khó trong việc trao đổi, tổng hợp dữ liệu.
> Máy tính phải đủ mạnh để có thể thực hiện đồng thời cả 3 loại dịch
vụ.
4.2 Kiến trúc hai tang (Two-Tier Architecture)
Kiến trúc này còn được biết đến với tên kiến trúc Client - Server Kiến trúc
này gồm 2 chương trình thực thi: chương trình Client và chương trình Server Cảhai chương trình có thể được thực thi trên cùng một máy tính hay trên hai máy tính
khác nhau
Client và Server trao đổi thông tin với nhau dưới dạng các thông điệp
(Message) Thông điệp gởi từ Client sang Server gọi là thông điệp yêu cầu (Request Message) mô tả công việc mà phân Client muôn Server thực hiện.
Request
Client Server
4 Reply
Hình 7: Kiến trúc chương trình Client — Server
Server nhận được một thông điệp yêu cầu, Server sẽ phân tích yêu cầu, thực
thi công việc theo yêu cầu và gol két qua về Client (nếu có) trong một thông điệp
trả lời (Reply Message) Khi vận hành, một máy tính làm Server phục vụ cho
nhiều máy tính Client
Mỗi một ứng dụng Client — Server phải định nghĩa một giao thức (Protocol)
riêng cho sự trao đôi thông tin, phôi hợp công việc giữa Client và Server Protocol qui định một sô van dé cơ bản sau:
Khuôn dạng loại thông điệp.
> Số lượng và ý nghĩa của từng loại thông điệp
Cách thức bắt tay, đồng bộ hóa tiến trình truyền nhận giữa Client và
Server.
Thông thường phan Client dam nhận các chức năng về User Interface, như
tạo các form nhập liệu, các thông báo, các báo biểu giao tiếp với người dùng.
Phần Server đảm nhận các chức năng về Data Storage Nhờ đó dễ dàng trong
việc bảo trì, chia sẽ tông hợp dữ liệu trong toàn bộ công ty hoặc tô chức.
Các chức năng về Business Rule có thé được cài đặt ở phan Client hoặc ở phân Server tạo ra hai loại kiên trúc Client - Server là:
> Fat Client.
> Fat Server.
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 7
Trang 12Tên dé tài: Tìm hiéu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
4.2.1 Loại Fat Client
Trong loại này Business Rule được cài đặt bên phía Client Phần
Server chủ yêu thực hiện chức năng về truy vấn và lưu trữ thông tin,
> Tạo ra ít giao thông trên mang nhờ dit liệu tạm thời trong quá
trình tính toán được lưu tại Client.
s% Nhược điểm:
> Vi Business Rule được cài đặt trên phía Client, đòi hỏi may tính thực thi phân Client phải đủ mạnh, dan đến tôn kém trong chi phí dau
tư phân cứng cho các công ty xí nghiệp.
Ề Phải cài đặt tất cả các máy tính Client khi nâng cấp chương
trình.
4.2.2 Loại Fat Server
Trong loại này, phân lớn các chức năng về Business Rule được đặt ở phan Server Phan Client chỉ thực hiện một sô chức năng nhỏ của Business Rule về kiêm tra tính hợp lệ của dữ liệu nhập bởi người dùng.
> Tạo ra nhiều thông điệp trao đổi giữa Client và Server làm tăng
giao thông trên mạng.
> Tăng tải trên máy Server vì nó phải đồng thời thực hiện các chức năng của Business Rule và Data Storage làm giảm hiệu năng
của chương trình.
Sinh viên thực hiện: Nguyễn Phú Lộc — DTH021691 Trang 8
Trang 13Tên đề tài: Tìm hiểu lập trình truyền thông va ứng dụng xây dựng chương trình chat trong Java
4.3 Kiến trúc đa tầng (N-Tier Architecture)
Đây là kiến trúc cho các ứng dụng phân tán (Distributed Application) Thông
thường là kiến trúc 3 tầng Chương trình ứng dụng được tách thành 3 phần riêng
biệt tương ứng cho 3 chức năng User Interface, Business Rule và Data Storage Vi
các chức năng thuộc về Business Rule được tách thành một phần riêng, nó có thểđược thục thi trên một máy tính Server riêng giải quyết được hau hết các nhược
điểm mắc phải của kiến trúc đơn tầng và kiến trúc hai tầng nói trên.
Request, ome
Business rule Reply Data Storage
: Reply Jt
User Interface
Hình 10: Kiến trúc chương trình da ting
Kiến trúc này đáp ứng tốt với những thay đổi về qui luật xử lý dữ liệu của
vấn đề mà ứng dụng giải quyết Việc thay đổi chỉ ảnh hưởng trên tầng Business
Rule mà không ảnh hưởng đến hai tầng còn lại.
Thông thường, người ta gọi tên các thành phần trên là:
Client - Application Server — Database Server
5 Giới thiệu một số kỹ thuật lập trình mang trong Java:
$.1 Giới thiệu về Socket:
và được sử dụng trong nhiều nếp ngữ lập trình khác nhau như: C, C++,
Java, Visual Basic, Visual C++,.
Socket cho phép thiết lập các kênh giao tiếp mà hai đầu kênh được
đánh dấu bởi hai công (port) Thông qua các cổng này một quá trình có thể
nhận và gởi dữ liệu với các quá trình khác.
Có hai kiểu Socket:
- Socket kiểu AF_UNIX chỉ cho phép giao tiếp giữa các quá
trình trong cùng một máy tính.
- Socket kiểu AF_INET chi cho phép giao tiếp giữa các quá
trình trên những máy tính khác nhau trên mạng.
5.1.2 SỐ hiệu cổng (port):
Đề có thể thực hiện các cuộc giao tiếp, một trong hai quá trình phảicông bố số hiệu cổng của socket mà mình sử dụng Mỗi cổng giao tiếp thể
hiện một địa chỉ xác định trong hệ thống Khi quá trình được gán một số hiệu
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 9
Trang 14Tên dé tài: Tìm hiều lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
a Pa h A a ~ TtA 2 ES A x ` , là ` , h
công Nó có thê nhận dữ liệu gởi đên công này từ các quá trình khác Quá trình còn lại cũng được yêu câu tạo ra một socket.
Ngoài số hiệu công, hai bên giao tiếp cần phải biết địa chỉ IP của nhau.
Địa chỉ IP giúp phân biệt máy tính này với máy tính kia trên mang TCP/IP Trong khi số hiệu cổng dùng dé phân biệt các quá trình khác nhau trên cùng một máy tính.
Số hiệu cổng gán cho socket phải duy nhất trên phạm vi máy tính đó,
có giá trị trong khoảng từ 0 đến 65535 (16 bits) Trong đó công từ 0 đến
1023 được gọi là cổng hệ thống được dành riêng cho các quá trình của hệ
thống
5.1.3 Địa chỉ IP (IP Address):
Địa chi IP là một giao thức mang thuộc lớp thứ 3 (network layer) trong
mô hình OSI — được dùng để truyền những gói dit liệu qua internet Nó là
một trong những giao thức mạng được sử dụng rộng rãi trên thế giới Nó
không phụ thuộc vào loại phần cứng mạng được sử dụng IP hoạt động như một cau nối giữa các mạng khác nhau.
Socket là một giao diện giữa chương trình ứng dụng với tầng vận
chuyên Nó cho phép ta chọn giao thức sử dụng ở tâng vận chuyên là TCP hay UDP cho chương trình ứng dụng của mình.
Sự khác nhau giữa hai chế độ giao tiếp: có kết nối (TCP) và không kết nỗi (UDP).
Chế độ có kết nối (TCP) Chế độkhông kết nối (UDP
- Tổn tại kênh giao tiếp giữa - Khong tổn tại kênh giao tiếp
hai bên giao tiếp giữa hai bên giao ti€p.
- Dé liệu được gửi đi theo chế - Dir liệu được gửi đi theo chế
độ bảo đảm: có kiêm tra lôi, độ không bảo đảm: không
truyền lại gói tin lỗi hay mắt, kiểm tra lỗi, không phát hiện,bảo đảm thứ tự đên của các không truyền lại gói tin lỗi
gói tin, hay mat, khéng bao dam thir
" , Ĩ h 5 tự dén của các gói tin.
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 10
Trang 15Tên dé tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
5.2 Servlet/Java Server Pages (JSP):
_ Trong Java, những chương trình phía chủ (server - side) thường được viet bang cách sử dụng servlet hoặc là Java Server Pages (JSP) BH cũng
có thê được việt băng những ngôn ngữ khác như: C, ASP, PHP,.
Servlet là một cách tiếp cận với lập trình ứng dụng Web Với servlet
các chương trình Java chỉ cần nạp một lân vào má ảo Java Servlet sẽ phục
vụ mọi yêu cầu từ máy khách gửi đến tương tự ISAPI (cách thức xây dựng
chương trình CGI ở dạng thư viện liên kết động được hỗ trợ bởi Windows)
Java Server Pages (JSP) là một cách đơn giản để người dùng (nhất là lập trình viên Java không chuyên) tiếp cận được hướng lập trình Web phía máy chủ hiệu quả và nhanh hơn Nếu bạn chưa biết tường tận Java hay Servlet bạn vẫn có thể thiết kế ứng dụng Web đáp ứng nhu cầu người dùng
phía trình khách thông qua các trang JSP.
Servlet đưa mã HTML vào lệnh Java trong khi ngược lai JSP đưa lệnh
Java vào các thẻ HTML Các trang JSP chứa các thẻ đặc biệt qui định gần
giống các thẻ của HTML khi bạn yêu cầu một trang JSP, trình chủ sẽ đọc trang JSP từ đĩa cứng, bộ diễn dịch JSP(JSP page compiler) sẽ diễn dich mã
lệnh Java chứa trong trang JSP thành một Servlet Sau đó trình chủ Java
Web Server sẽ triệu gọi Servlet trả kết quả thuần HTML cho trình khách.
JAVA WEB SERVER
Hình 11: Cơ chế triệu gọi trang JSP
5.3 Applet:
Applet là một trong những tiêu điểm nổi trội trong lĩnh vực lập trình web Khi công nghệ Java được giới thiệu lần đầu tiên, thì hầu như là nói vềApplet Bởi vì chúng cho phép những chương trình được download về một
trình duyệt (browser) và chạy dựa trên trình duyệt (Browser) thông qua giao
thức HTTP.
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 11
Trang 16Tên đề tài: Tìm hiểu lập trình truyền thông và ứng dụng xây dựng chương trình chat trong Java
5.4, Remote Methods Invocation (RMD):
RMI là một kỹ thuật hệ thống phân tán cho phép một máy ảo Java (JVM) truy xuất đến những phương thức đối tượng (object methods) — chạy trên một máy ảo Java khác trên mạng Kĩ thuật này cực kỳ quan trọng cho
sự phát triển của những hệ thống lớn Nó có thể phân bố những tài nguyên
và việc xử lý thông qua nhiều máy.
RMI là một công nghệ Java cho phép một máy ảo giao tiếp với những
máy ảo khác và thực thi một phương thức đối tượng Những đối tượng có
thể truy xuất đến những phương thức trên những đối tượng nằm ở xa dễ đàng như chúng ở trên máy cục bộ.
Mỗi dịch vụ của RMI được định nghĩa bằng một giao diện (interface) —
mô tả những phương thức của đối tượng có thể được thực thi từ xa Giao diện này phải được chia sẽ bởi tất cả những người phát triển - người viết nên phần mềm cho dịch vụ đó Nó đóng vai trò như một bản thiết kế của
ứng dụng — cái mà được sử dụng và chuẩn bị cho sự thi hành của dịch vụ.
Nhiều việc thực thí giao diện có thể được tạo ra, và những người phát trién
không cần quan tâm đến sự thi hành nào đang được sử dụng hoặc nguồn gốc
phát sinh.
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 12
Trang 17Tên đề tài: Tìm hiểu lập trình truyền thông và ứng dụng xây đựng chương trình chat trong Java
H Ngôn ngữ Java
Package (gói) là một khái niệm để chỉ một tập hợp những lớp (class)'và giao diện
(interface) được những người đi trước cung cấp sẵn.
Sau đây là một số gói đã được sử dụng trong chương trình:
1, Thiết kế giao diện người dùng (User Interface):
Giao diện người dùng(User Inteface) là một thành phần không thể thiếu
trong bất kỳ một ứng dụng nào Nó là một thành phần giao tiếp giữa người dùng
và chương trình ứng dụng.
Để giúp cho những người lập trình có thể tạo nên những giao diện (UserInterface) đẹp, hap dẫn người sử dụng, Java đã cung cấp những gói (Package) hỗ
trợ cho lập trình giao diện như:
> Gói Java awt.*: Gói này cung: cấp những Class cơ sở giúp cho người
lập trình dễ dàng hơn trong việc thiết kế giao diện tương |tác với người dùng
(như: Menu, TextArea, TextField, ) Ngoài ra nó còn hỗ trợ thêm cho ta về
cách thức nắm bắt những sự kiện (click chuột vào Button, nhắn phim Enter
trên TextField, ) tương tac giữa người dùng với giao diện của chương trình
(vấn dé này được hỗ trợ khá đây đủ trong gói java.awt.event.*)
> Gói javax.swing.*: Gói này cũng có nhưng tính năng tương tự như gói
java.awt.*.
Lép trinh mang:
Có thé nói Java hỗ trợ rất mạnh về lập trình ứng dụng mạng với các lớp thư
viện socket giúp đơn giản hóa quá trình kết nỗi và chuyên dữ liệu trên mạng.
Một gói (Package) không thể thiếu được trong hầu hết các ứng dụng mạng
hiện nay là:
> Gói Java.net.*- Gói này cung cấp những thư viện lập trình mạng rất tiện
lợi Một số lớp tiêu biểu được dùng cho lập trình Client— Server sử dụng
Socket làm phương tiện giao tiép như:
- Socket: Hỗ trợ các phương thức liên quan đến Socket cho chương
trình Client ở chế độ có nối kết.
- ServerSocket: Hỗ trợ các phương thức liên quan đến Socket cho
chương trình Server ở chê độ có nôi ket.
Các luéng nhập xuat:
Thông thường, một chương trình cần nhận vào thông tin từ một nguồn tài nguyên bên ngoài hoặc là gởi thông tin đến một nơi nào đó Thông tin có thể ở bất
ky nơi nào: trong một file, trên đĩa, một vài nơi nào trên mạng, trong bộ nhớ, hoặc
trong những chương trình khác Vấn đề này cũng đã trở nên khá đơn giản trong
ngôn ngữ Java nhờ vào sự hỗ trợ của gói:
Gói java.io.*: Gói này chứa nhiều Class, cái mà những chương trình
ứng dụng có thể ssử dụng nó để đọc và ghi dữ liệu Một số lớp điển hình
thường hay được sử dụng nhất như:
Sinh viên thực hiện: Nguyễn Phú Lộc - DTH021691 Trang 13