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

bao cao mon hoc phat trien ung dung chat bang java

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 (1.32 MB, 32 trang )

KHOA KỸ THUẬT VÀ CÔNG NGHỆ
BỘ MÔN CÔNG NGHỆ THÔNG TIN

PHÁT TRIỂN ỨNG DỤNG HƯỚNG DỊCH VỤ

HỌC KỲ 4
NĂM HỌC 2024

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA

Giảng viên hướng dẫn: ThS. Ngô Thanh Huy
Sinh viên thực hiện
Họ và tên: Nguyễn Hoàng Phương
MSSV: 170122255
Lớp: DK22TTC6

Thành phố Hồ Chí Minh, tháng 02 năm 2024.

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................


......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................


Trà Vinh, ngày ….. tháng …… năm ……
Giáo viên hướng dẫn
(Ký tên và ghi rõ họ tên)

SV thực hiện: Nguyễn Hoàng Phương 1

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

NHẬN XÉT CỦA THÀNH VIÊN HỘI ĐỒNG

......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................

......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................
......................................................................................................................................................

Trà Vinh, ngày ….. tháng …… năm ……
Thành viên hội đồng

(Ký tên và ghi rõ họ tên)

SV thực hiện: Nguyễn Hoàng Phương 2

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy
LỜI CẢM ƠN


Lời đầu tiên em xin chân thành cảm ơn thầy Ngô Thanh Huy đã giảng dạy, truyền
đạt cho em những kiến thức trong 3 buổi học trực tuyến của Trường Đại Học Trà Vinh.

Cám ơn cô quản lý học tập Lê Thị Hằng đã hỗ trợ trong quá trình học tập trực
tuyến tại website học tập trực tuyến của Trường Đại Học Trà Vinh.

Xin cảm ơn các bạn lớp DK22TTC6 đã luôn đồng hành cùng tôi trong suốt thời
gian học tập môn “Phát triển ứng dụng hướng dịch vụ” và hỗ trợ cho tôi trong quá trình
làm báo cáo này.

Với sự hiểu biết tự tìm tịi của bản thân và quá trình giảng tận tình của giảng viên
qua những buổi học trực tuyến em đã cố gắng hoàn thành báo cáo một cách tốt nhất,
nhưng cũng không thể tránh được thiếu sót. Kính mong nhận được sự đóng góp ý kiến
từ thầy Giảng Viên bộ mơn để em có thể nâng cao và bổ sung thêm kiến thức cho bản
thân, hồn thiện báo cáo kết thúc mơn học đạt kết quả tốt và hoản chỉnh hơn.

Em xin chân thành cảm ơn!

Thành phố Hồ Chí Minh, ngày 22 tháng 02 năm 2024
Sinh viên thực hiện

Nguyễn Hoàng Phương

SV thực hiện: Nguyễn Hoàng Phương 3

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

MỤC LỤC
LỜI CẢM ƠN ................................................................................................... Trang 03

Mục lục .............................................................................................................. Trang 04
DANH MỤC HÌNH ẢNH ................................................................................ Trang 06
Tóm tắt .............................................................................................................. Trang 07
Mở đầu............................................................................................................... Trang 08
Chương 1: Tổng quan ...................................................................................... Trang 09
Chương 2: Nghiên cứu lý thuyết ..................................................................... Trang 10
2.1. Kiến trúc Client-Server........................................................................... Trang 10
2.2. Giao thức TCP/IP .................................................................................... Trang 11
2.3. Socket........................................................................................................ Trang 12

2.3.1. Khái quát về Socket............................................................................ Trang 12
2.3.2. Cơ chế Socket ...................................................................................... Trang 13
2.3.3. Mơ hình truyền tin Stream Socket.................................................... Trang 13
2.3.4. Một số hàm cơ bản trong Socket....................................................... Trang 15
2.4. Giới thiệu ngôn ngữ Java ........................................................................ Trang 17
2.4.1. Khái niệm cơ bản về Java .................................................................. Trang 17
2.4.2. Ứng dụng ............................................................................................. Trang 17
2.4.3. Sự lựa chọn phổ biến .......................................................................... Trang 18
2.4.3. Cách hoạt động của Java ................................................................... Trang 18
2.4.5. Java la ngôn ngữ lập trình hướng đối tượng ................................... Trang 18
2.4.6. Biến ...................................................................................................... Trang 18
2.4.7. Các kiểu dữ liệu .................................................................................. Trang 19
2.4.8. Ép kiểu trong Java.............................................................................. Trang 19
2.4.9. Nạp chồng và ghi đè ........................................................................... Trang 19
2.4.10. Interface............................................................................................. Trang 20
2.4.11. Abstracts............................................................................................ Trang 20
Chương 3: Nội dung thực hiện ........................................................................ Trang 21

SV thực hiện: Nguyễn Hoàng Phương 4


PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

3.1. Môi trường chạy ứng dụng và cơng cụ để lập trình ứng dụng............ Trang 21
3.1.1. Cài đặt máy ảo JAVA......................................................................... Trang 21
3.1.2. Cài đặt Eclipse IDE ............................................................................ Trang 21
3.2. Giải pháp thực hiện ................................................................................. Trang 22
3.2.1. Xây dựng chương trình Server.......................................................... Trang 22
3.2.2. Xây dựng chương trình Client .......................................................... Trang 23
3.2.3. Thiết kế giao diện hiển thị khung chat phía Client ......................... Trang 23
3.2.4. Chức năng của chương trình ............................................................. Trang 23
3.3. Thực nghiệm chương trình ..................................................................... Trang 23
3.3.1. Khởi tạo server miniCHAT ............................................................... Trang 23
3.3.2. Khởi tạo Client kết nối tới Server ..................................................... Trang 24
3.3.3. Thông tin hiển thị trên Server ........................................................... Trang 27
Chương 4: ĐÁNH GIÁ KẾT QUẢ ................................................................ Trang 28
4.1. Kết quả đạt được ....................................................................................... Trang 28
4.2. Hạn chế ....................................................................................................... Trang 28
4.3. Hướng phát triển ....................................................................................... Trang 28
Chương 5: Kêt luận .......................................................................................... Trang 29
DANH MỤC TÀI LIỆU THAM KHẢO ........................................................ Trang 30
Phụ lục ............................................................................................................... Trang 31

SV thực hiện: Nguyễn Hoàng Phương 5

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

DANH MỤC HÌNH ẢNH

1. Hình 1: Mơ hình Client-server.
2. Hình 2: Giao tiếp Socket, tầng làm việc trong mơ hình OSI và TCP/IP.

3. Hình 3: Mơ hình truyền tin Stream Socket.
4. Hình 4 : Mơ hình tương tác giữa client/server qua socket TCP.
5. Hình 5: Ví dụ về một chương trình socket TCP.
6. Hình 6: Các kiểu dữ liệu trong Java.
7. Hình 7: Tải ứng dụng JDK (x64 Installer).
8. Hình 8: Tải ứng dụng Eclipse.
9. Hình 9: Cài đặt Eclipse IDE
10. Hình 10: Khởi tại server miniCHAT.
11. Hình 11: Form đăng nhập client.
12. Hình 12: Giao diện chat của Client.
13. Hình 13: Thử nghiệm chat chung và chat riêng.
14. Hình 14 : Hiển thị thơng báo login và logout trên Server.
15. Hình 15 : Hình ảnh thực tế khi triển khai trong mạng LAN.

SV thực hiện: Nguyễn Hoàng Phương 6

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

TÓM TẮT

Trong đề tài này cần nghiên cứu về ngơn ngữ lập trình java, chương trình soạn
thảo Eclipse IDE for Java Developers và sử dụng Socket trong Java.

Sơ lược về socket, socket là giao diện lập trình ứng dụng mạng được dùng để
truyền và nhận giữ liệu trên internet. Giữa hai chương trình chạy trên mạng cần có một
liên kết giao tiếp hai chiều, hay cịn gọi là two-way communication để kết nối 2 process
trò chuyện với nhau. Điểm cuối (endpoint) của liên kết này được gọi là socket. Socket
sẽ được sử dụng để "lắng nghe" mỗi khi có tin nhắn mới, reaction... để cập nhật lên giao
diện. Việc cập nhật dữ liệu thời gian thực như thế đem lại một trải nghiệm tuyệt vời cho
người dùng. Nó sẽ giải quyết vấn đề một cách nhanh gọn và tiếm kệm tài nguyên cho

cả client và server.

Stream Socket hay còn gọi là socket hướng kết nối, là socket hoạt động thông
qua giao thức TCP (Transmission Control Protocol). Stream Socket chỉ hoạt động khi
server và client đã kết nối với nhau thông qua một IP và Port, dữ liệu truyền đi được
đảm bảo truyền đến đúng nơi nhận, đúng thứ tự với thời gian nhanh chóng.

Trong đề tài này đã tạo được phòng chat trong mạng LAN. Kết nối giữa Client
và server sử dụng socket, chat chung và chat riêng, xây dựng giao diện chat đơn giản.

SV thực hiện: Nguyễn Hoàng Phương 7

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

MỞ ĐẦU

Với sự phát triển của công nghệ thông tin hiện nay, Internet ngày càng giữ vai
trò quan trọng trong các lĩnh vực khoa học kỹ thuật và đời sống. Dĩ nhiên các bạn đã
được nghe nói nhiều về Internet, nói một cách đơn giản, Internet là một tập hợp máy
tính nối kết với nhau, là một mạng máy tính tồn cầu mà bất kì ai cũng có thể kết nối
bằng máy tính riêng của họ. Với mạng Internet, tin học thật sự tạo nên một cuộc cách
mạng trao đổi thông tin trong mọi lĩnh vực văn hóa, xã hội, chính trị, kinh tế, …

Bên cạnh việc phát triển của thư điện tử bằng nhiều dịch vụ khác nhau (Gmail,
Yahoo Mail, SMS trên mạng điện thoại di động…), việc chat trực tuyến và gửi flie trực
tiếp trên Internet cũng là nhu cầu không thể thiếu. Việc chat trực tuyến luôn cần thiết
cho mọi người trong một doanh nghiệp, cơ sở giáo dục, y tế, các tổ chức xã hội, …

Với thực tế như vậy, em đã nghiên cứu và xây dựng mơ hình MINICHAT trong


mạng nội bộ của một doanh nghiệp nhỏ. Có 2 dối tuợng sự dụng là client (nguời
dùng) và server:

- Client: từ ứng dụng, người dùng có thể nhắn tin chia sẻ thơng tin qua về với nhau
giữa người dùng và người dùng, thay thế cùng dùng những chức năng có trong ứng
dụng đã được xây dựng.

- Server: có tồn quyền hiển thị, cập nhật và thay đổi thông tin của 1 hoặc nhiều
người dùng. Qua đó đảm bảo an tồn thơng tin của họ.

SV thực hiện: Nguyễn Hồng Phương 8

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

CHƯƠNG 1: TỔNG QUAN

Trong đề tài này sẽ tập trung thiết kế giải thuật cho server và client. Xây dựng giao diện
để người sử dụng có thể dễ dàng trao đổi thông tin qua lại với nhau.

Giải thuật chương trình phía server:

- Tạo socket, đăng ký địa chỉ socket với hệ thống.
- Đặt socket ở trạng thái lắng nghe, chờ và sẵn sàng cho việc kết nối từ client.
- Chấp nhận kết nối từ client, gởi nhận dữ liệu.
- Đóng kết nối sau khi hồn thành, trở lại trang thái lắng nghe và chờ kết nối mới.
Giải thuật chương trình phía client:
- Xác định địa chỉ server.
- Tạo socket.
- Kết nối đến server.
- Gởi nhận dữ liệu.

- Đóng kết nối.

SV thực hiện: Nguyễn Hoàng Phương 9

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

CHƯƠNG 2: NGHIÊN CỨU LÝ THUYẾT

2.1 Kiến trúc Client-Server

Hình 1: Mơ hình Client-server.

Mơ hình được phổ biến nhất và được chấp nhận rộng rãi trong các hệ thống phân tán là
mơ hình client/server. Mơ hình Client-Server là mơ hình mà ở đây, máy khách là các máy tính
này gửi yêu cầu đến server (hay còn được gọi là máy chủ). Máy chủ, xử lý các yêu cầu đó và
trả về kết quả. Trong mơ hình này sẽ có một tập các tiến trình mà mỗi tiến trình đóng vai trị
như là một trình quản lý tài ngun cho một tập hợp các tài nguyên cho trước và một tập hợp
các tiến trình client trong đó mỗi tiến trình thực hiện một tác vụ nào đó cần truy xuất tới tài
nguyên phần cứng hoặc phần mềm dùng chung. Bản thân các trình quản lý tài nguyên cần phải
truy xuất tới các tài nguyên dùng chung được quản lý bởi một tiến trình khác, vì vậy một số
tiến trình vừa là tiến trình client vừa là tiến trình server. Các tiến trình phát ra các yêu cầu tới
các server bất kỳ khi nào chúng cần truy xuất tới một trong các tài nguyên của các server. Nếu
yêu cầu là đúng đắn thì server sẽ thực hiện hành động được yêu cầu và gửi một đáp ứng trả lời
tới tiến trình client.

Mơ hình truyền tin client/server hướng tới việc cung cấp dịch vụ. Quá trình trao đổi dữ
liệu bao gồm:

- Truyền một yêu cầu từ tiến trình client tới tiến trình server.
- Yêu cầu được server xử lý.


SV thực hiện: Nguyễn Hoàng Phương 10

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

- Truyền đáp ứng cho client.
Mơ hình truyền tin này liên quan đến việc truyền hai thơng điệp và một dạng đồng bộ hóa
cụ thể giữa client và server. Tiến trình server phải nhận được thông điệp được yêu cầu ở bước
một ngay khi nó đến và hành động phát ra yêu cầu trong client phải được tạm dừng (bị phong
tỏa) và buộc tiến trình client ở trạng thái chờ cho tớ khi nó nhận được đáp ứng do server gửi về
ở bước ba. Mơ hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi (send)
và nhận (receive):
- Client: Máy khách trên mạng, chứa các chương trình Client
- Server: Máy phục vụ-Máy chủ. Chứa các chương trình Server, tài nguyên (tập tin, tài
liệu...) dùng chung cho nhiều máy khách. Server luôn ở trạng thái chờ yêu cầu và đáp ứng
yêu cầu của Client.

2.2 Giao thức TCP/IP

TCP/IP là tên chung cho một tập hợp hơn 100 giao thức được sử dụng để kết nối các máy
tính vào mạng, trong đó hai giao thức chính là TCP (Transmission Control Protocol) và IP
(Internet Protocol).

Trong phạm vi Internet, thông tin không được truyền tải như một dịng riêng biệt từ máy
tính này tới máy tính khác. Thay vào đó, dữ liệu được chia thành những gói nhỏ gọi là packet.

Các packet này được gửi trên mạng máy tính. Cơng việc của IP là chuyển chúng đến các
máy tính ở xa. Tại trạm cuối, TCP nhận các packet và kiểm tra lỗi. Nếu một lỗi xuất hiện, TCP
yêu cầu gói riêng biệt đó phải được gửi lại. Chỉ khi tất cả các packet đã nhận được là đúng, TCP
sẽ sử dụng số thứ tự để tạo lại thông tin ban đầu.


Giao thức IP là một giao thức hướng dữ liệu được sử dụng bởi các máy chủ nguồn và
đích để truyền dữ liệu trong một liên mạng chuyển mạch gói. Dữ liệu trong một liên mạng IP
được gửi theo các khối được gọi là các gói (packet hoặc datagram). Cụ thể, IP không cần thiết
lập các đường truyền trước khi một máy chủ gửi các gói tin cho một máy khác mà trước đó nó
chưa từng liên lạc với.

Giao thức IP rất thông dụng trong mạng Internet công cộng ngày nay. Giao thức tầng
mạng thông dụng nhất ngày nay là IPv4; đây là giao thức IP phiên bản 4. IPv6 được đề nghị sẽ
kế tiếp IPv4: Internet đang hết dần địa chỉ IPv4, do IPv4 sử dụng 32 bit để đánh địa chỉ (tạo
được khoảng 4 tỷ địa chỉ); IPv6 dùng địa chỉ 128 bit, cung cấp tối đa khoảng 3.4×1038 địa chỉ.

Giao thức TCP là một trong các giao thức cốt lõi của bộ giao thức TCP/IP. Sử dụng TCP,
các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau, mà qua đó
chúng có thể trao đổi dữ liệu hoặc các gói tin. Giao thức này đảm bảo chuyển giao dữ liệu tới
nơi nhận một cách đáng tin cậy và đúng thứ tự. TCP còn phân biệt giữa dữ liệu của nhiều ứng
dụng (chẳng hạn, dịch vụ Web và dịch vụ thư điện tử) đồng thời chạy trên cùng một máy chủ.

SV thực hiện: Nguyễn Hoàng Phương 11

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên dưới và một
ứng dụng bên trên. Các ứng dụng thường cần các kết nối đáng tin cậy kiểu đường ống để liên
lạc với nhau, trong khi đó, giao thức IP khơng cung cấp những dịng kiểu đó, mà chỉ cung cấp
dịch vụ chuyển gói tin khơng đáng tin cậy. TCP làm nhiệm vụ của tầng giao vận trong mơ hình
OSI đơn giản của các mạng máy tính.

2.3 Socket


Trong hệ thống mạng máy tính tồn tại những mơ hình tham chiếu có kiến trúc phần tầng
(OSI, TCP/IP…) nhằm hỗ trợ chức năng trao đôi thông tin giữa các ứng dụng ở nhiều máy tính
khác nhau.

Hình 2: Giao tiếp Socket, tầng làm việc trong mơ hình OSI và TCP/IP.

Socket là giao diện lập trình ứng dụng mạng được dùng để truyền và nhận dữ liệu trên
internet. Giữa hai chương trình chạy trên mạng cần có một liên kết giao tiếp hai chiều, hay còn
gọi là two-way communication để kết nối 2 process trò chuyện với nhau. Điểm cuối (endpoint)
của liên kết này được gọi là socket.

2.3.1 Khái quát về Socket

Như chúng ta đã biết kết nối URLs và URL cung cấp cho chúng ta một cơ cấu để truy
xuất vào các tài nguyên trên Internet ở một mức tương đối cao, nhưng đôi khi chương trình của
chúng ta lại yêu cầu một giao tiếp ở tầng mạng mức thấp.Ví dụ khi chúng ta viết một ứng dụng
client-server.

Trong một ứng dụng client-server thì phía server sẽ cung cấp một số dịch vụ, như: xử lí
cơ sở dữ liệu, các yêu cầu bên phía client đưa ra, sau đó sẽ gửi lại cho phía client. Sự giao tiếp
như vậy gọi là tin cậy bởi vì dữ liệu sẽ khơng bị mất mát, sai lệch trong q trình truyền, server
gửi cho client thơng điệp gì thì phía client sẽ nhận được thông điệp nguyên như vậy. Giao thức
TCP sẽ cung cấp cho chúng ta một cách thức truyền tin cậy. Để có thể nói chuyện được trên

SV thực hiện: Nguyễn Hoàng Phương 12

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngơ Thanh Huy

TCP thì chương trình client và chương trình server phải thiếp lập một đường truyền, và mỗi
chương trình sẽ phải kết nối lại với socket là điểm cuối để kết nối, client và server muốn nói

chuyện với nhau thì sẽ phải thơng qua socket, mọi thơng điệp sẽ phải đi qua socket. Chúng ta
cứ mường tượng socket ở đây là một cái cửa mọi người muốn đi ra hay đi vào đều phải thông
qua cái cửa này.

2.3.2 Cơ chế Socket

Một socket là một điểm cuối của thông tin hai chiều liên kết giữa hai chương trình đang
chạy trên mạng. Những lớp socket được dùng để đại diện cho kết nối giữa một chương trình
client và một chương trình server. Trong Java gói Java.net cung cấp hai lớp Socket và
ServerSocket để thực hiện kết nối giữa client và server.

Thông thường thì server sẽ chạy trên một máy đặc biệt và có một socket giới hạn trong
1 Port number đặc biệt.

Phía client: client được biết hostname của máy mà server đang chạy và port number mà
server đang lắng nghe. Để tạo một yêu cầu kết nối client sẽ thử hẹn gặp server ở trên máy của
server thông qua port number. Client cũng cần xác định chính nó với server thơng qua local
port number.

Nếu thơng tin đúng thì server sẽ đồng ý kết nối. Khi đồng ý kết nối thì server sẽ tạo ra
một socket mới để nói chuyện với client và cũng tạo ra một socket khác để tiếp tục lắng nghe.

2.3.3 Mơ hình truyền tin Stream socket

Hình 3: Mơ hình truyền tin Stream Socket.

SV thực hiện: Nguyễn Hoàng Phương 13

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy


Hình 4 : Mơ hình tương tác giữa client/server qua socket TCP.

Một socket có thể thực hiện 7 thao tác cơ bản:
- Kết nối với một máy ở xa.
- Gửi dữ liệu.
- Nhận dữ liệu.
- Ngắt liên kêt.
- Gán cổng.
- Nghe dữ liệu đến.
- Chấp nhận liên kết từ các máy ở xa trên cổng đã được gán.
Lớp Socket của Java được sử dụng bởi cả client và server, có các phương thức tương ứng với
bốn thao tác đầu tiên. Ba thao tác cuối chỉ cần cho server để chờ các client liên kết với chúng.
Các thao tác này được cài đặt bởi lớp ServerSocket. Các socket cho client thường được sử dụng
theo mô hình sau:
- Một socket mới được tạo ra bằng cách sử dụng hàm Socket().
- Socket cố gắng liên kết với một host ở xa.

SV thực hiện: Nguyễn Hoàng Phương 14

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

- Mỗi khi liên kết được thiết lập, các host ở xa nhận các luồng vào và luồng ra từ socket, và
sử dụng các luồng này để gửi dữ liệu cho nhau. Kiểu liên kết này được gọi là song công
(full-duplex) - các host có thể nhận và gửi dữ liệu đồng thời. Ý nghĩa của dữ liệu phụ thuộc
vào giao thức.

- Khi việc truyền dữ liệu hồn thành, một hoặc cả hai phía ngắt liên kết.
Giao tiếp giữa client và server:
- Server: (chỉ chạy một lần):


+ Server phải chạy trước.
+ Server phải tạo một socket để lắng nghe và chấp nhận kết nối từ client.
- Client: (có thể chạy nhiều lần):
+ Khởi tạo TCP socket.
+ Xác định địa chỉ IP, Port number của server.
+ Thiết lập kết nối đến server.
- Khi server nhận yêu cầu kết nối, nó sẽ chấp nhận yêu cầu và khởi tạo socket mới để giao
tiếp với client.

2.3.4 Một số hàm cơ bản trong socket

* Class mô tả về socket:
- Tạo một socket:

+ public Socket(String host, int port) throws UnknownHostException, IOException.
+ public Socket(InetAddress host, int port) throws IOException.
+ public Socket(String host, int port, InetAddress localAddress, int localPort) throws
IOException.
+ public Socket(InetAddress host, int port, InetAddress localAddress, int localPort)
throws IOException.
+ public Socket().
- Lấy thông tin về một socket:
+ public void connect(SocketAddress host, int timeout) throws IOException.
+ InetAddress getInetAddress() : trả về địa chỉ mà socket kết nối đến.
+ int getPort() : trả về địa chỉ mà socket kết nối đến.
+ InetAddress getLocalAddress() : trả về địa chỉ cục bộ.
+ int getLocalPort() : trả về địa chỉ cục bộ.
- Sử dụng Streams:
+ public OutputStream getOutputStream() throws IOException: Trả về một output stream
cho việc viết các byte đến socket này.


SV thực hiện: Nguyễn Hoàng Phương 15

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

+ public InputStream getInputStream() throws IOException : Trả về một input stream cho
việc đọc các byte từ socket này.
- Đóng socket:
+ public void close() throws IOException.
* ServerSocket class:
- Class mô tả ServerSocket:
Tạo một ServerSocket:
+ public ServerSocket(int port) throws IOException.
+ public ServerSocket(int port, int backlog) throws IOException.
+ public ServerSocket(int port, int backlog, InetAddress address) throws IOException.
+ public ServerSocket() throws IOException.
- Các phương thức trong ServerSocket:
+ Socket accept() throws IOException: lắng nghe một kết nối đến socket này và có chấp
nhận nó hay khơng.
+ void close() throws IOException: Ðóng socket.
+ InetAddress getInetAddress() : trả về địa chỉ cục bộ của socket.
+ int getLocalPort() : trả về port mà server đang lắng nghe.
+ public void bind(SocketAddress host, int backlog).
+ void setSoTimeout(int timeout) throws SocketException.

SV thực hiện: Nguyễn Hoàng Phương 16

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

Hình 5: Ví dụ về một chương trình socket TCP.


2.4 Giới thiệu Ngơn ngữ lập trình Java
2.4.1 Khái niệm cơ bản về Java
Java là một ngơn ngữ lập trình được sử dụng rộng rãi để viết mã cho các ứng dụng web.

Ngôn ngữ này là lựa chọn phổ biến của các nhà phát triển trong hơn 2 thập niên. Hiện nay có
hàng triệu ứng dụng Java đang được sử dụng. Java là một ngôn ngữ đa nền tảng, hướng đến đối
tượng, lấy mạng làm trung tâm và có thể được sử dụng như một nền tảng. Đây là một ngơn
ngữ lập trình nhanh, bảo mật, đáng tin cậy dùng để viết mã cho mọi thứ từ ứng dụng di động,
phần mềm doanh nghiệp cho đến các ứng dụng dữ liệu lớn và công nghệ phía máy chủ.

2.4.2 Ứng dụng
Vì Java là một ngơn ngữ miễn phí và linh hoạt, nó có thể được dùng để phát triển các

phần mềm cục bộ và phân tán. Một số công dụng phổ biến của Java bao gồm: Phát triển trị
chơi, điện tốn đám mây, dữ liệu lớn, trí tuệ nhân tạo, internet vạn vật, ...

SV thực hiện: Nguyễn Hoàng Phương 17

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngô Thanh Huy

2.4.3 Sự lựa chọn phổ biến

Java phổ biến vì nó được thiết kế để có thể dễ dàng sử dụng. Một số lý do mà nhà phát
triển tiếp tục chọn Java thay vì những ngơn ngữ lập trình khác bao gồm: Tài nguyên học tập
chất lượng cao, các chức năng và thư viện sẵn có, sự hỗ trợ tích cực của cộng đồng, độc lập với
nền tảng và bảo mật.

2.4.4 Cách hoạt động của Java


Mọi ngôn ngữ lập trình đều là phương thức để giao tiếp với máy. Phần cứng của máy
chỉ phản hồi thông tin giao tiếp điện tử. Các ngơn ngữ lập trình cấp độ cao như Java đóng vai
trị là cầu nối giữa ngôn ngữ con người và ngôn ngữ phần cứng. Để sử dụng Java, nhà phát
triển cần phải hiểu được 2 điều:
- Ngôn ngữ và API Java: Đây là hoạt động giao tiếp front-end giữa nhà phát triển và nền

tảng Java.
- Máy ảo Java: Ðây là hoạt dộng giao tiếp back-end giữa nền tảng Java và phần cứng cơ sở.

2.4.5 Java là ngôn ngữ lập trình huớng đối tuợng

Java là một ngơn ngữ lập trình huớng đối tuợng vì vậy nó cung hỗ trợ các đặc tính của lập trình
huớng đối tuợng:
+ Đa hình (Polymorphism): Trong từng trường hợp, hồn cảnh khác nhau thì đối tượng có
hình thái khác nhau tùy thuộc vào từng ngữ cảnh.
+ Kế thừa (Inheritance): Là sự liên quan giữa hai class với nhau, trong đó có class cha
(superclass) và class con (subclass). Khi kế thừa class con được hưởng tất cả các phương thức
và thuộc tính của class cha.
+ Đóng gói (Encapsulation): Đóng gói là sự che giấu dữ liệu riêng bên trong mỗi đối tượng
của lớp được khai báo và chỉ được truy xuất thông qua hệ thống các phương thức có sẵn của
lớp. Tính đóng gói dùng để bảo vệ dữ liệu, ngăn ngừa việc truy cập và gán giá trị trực tiếp cho
thuộc tính bên trong đối tượng, nhằm bảo vệ tính chính xác của giá trị thuộc tính.
+ Trừu tượng (Abstraction): Đó là một q trình che giấu các hoạt động bên trong và chỉ hiển
thị những tính năng thiết yếu của đối tượng tới người dùng.

2.4.6 Biến

Biến duợc tạo ra cùng với lớp trong qua trình lập trình để mơ tả thuộc tính của đối tuợng. Có
2 loại biến cục bộ và biến toàn cục:
- Biến cục bộ: là biến đuợc khởi tạo bên trong các phương thức. Và sẽ bị huỷ khi phương thức

bị huỷ.

SV thực hiện: Nguyễn Hoàng Phương 18

PHÁT TRIỂN ỨNG DỤNG MINICHAT BẰNG JAVA GVHD: ThS. Ngơ Thanh Huy

- Biến tồn cục (Instant): là biến nằm bên trong một lớp và bên ngoài mọi phương thức.
- Biến static: biến static đuợc khai báo trong một class với từ khóa ‘static’, phía bên ngoài các
phương thức, constructor và block.

2.4.7 Các kiểu dữ liệu

Byte, Short, Int, Long, Char, Boolean, Float, Double

Hình 6: Các kiểu dữ liệu trong Java.

2.4.8 Ép kiểu trong Java

- Ép kiểu Nới rộng (Widening): Là q trình làm trịn số từ kiểu dữ liệu có kích thuớc nhỏ
hơn sang kiểu có kích thuớc lớn hơn. Kiểu biến đổi này khơng làm mất thơng tin. Ví dụ
chuyển từ int sang float. Chuyển kiểu loại này có thế đuợc thực hiện ngầm định bởi trình
biên dịch.

- Ép kiểu Thu hẹp (Narrowwing): Là q trình làm trịn số từ kiểu dữ liệu có kích thước lớn
hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thơng tin. Chuyển
kiểu loại này không thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thực hiện
chuyển kiểu tường minh.

2.4.9 Nạp chồng (Overloading) và ghi đè (Overriding)


- Nạp chồng (Overloading): Là 2 phương thức có cùng tên nhưng khác tham số sẽ trả về kết
quả khác nhau.

- Ghi đè (Overriding): là lớp con cung cấp lại một cài đặt cụ thể cho một phương thức mà
lớp cha đã cung cấp thì đó gọi là ghi đè phương thức. Nó được thục hiện dựa trên 2 lớp có
tính chất kế thừa.

SV thực hiện: Nguyễn Hoàng Phương 19


×