Tải bản đầy đủ (.doc) (36 trang)

ĐỒ ÁN CƠ SỞ - ĐỀ TÀI: ỨNG DỤNG MESSENGER SỬ DỤNG TCP/IP SOCKET

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 (2.32 MB, 36 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI: ỨNG DỤNG MESSENGER
SỬ DỤNG TCP/IP SOCKET

Sinh viên thực hiện
Giảng viên hướng dẫn
Lớp

: VÕ ĐẠI VIỆT ĐỨC
: THS. NGUYỄN ĐỖ CÔNG PHÁP
: 18IT2

Đà Nẵng, tháng 01 năm 2021

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
VÀ TRUYỀN THÔNG VIỆT - HÀN

KHOA KHOA HỌC MÁY TÍNH


ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI: ỨNG DỤNG MESSENGER
SỬ DỤNG TCP/IP SOCKET

Đà Nẵng, tháng 01 năm 2021


2


MỞ ĐẦU
Giao tiếp là yếu tố đảm bảo cho sự tồn tại và phát triển của xã hội, là tập hợp
những mối quan hệ giữa con người với con người tác động qua lại với nhau. Xã hội sẽ
không thể tồn tại khi con người khơng có mối quan hệ gắn bó với nhau. Sự giao tiếp
ngày càng được mở rộng, khơng cịn giới hạn ở mỗi vùng miền, quốc gia, hay lục địa.
Cùng với đó là sự phát triển về công nghệ thông tin cũng như cầu sử dụng ứng dụng
giao tiếp ngày càng tăng cao dẫn đến việc cần thiết tạo ra những ứng dụng giao tiếp.
Với ứng dụng giao tiếp, cụ thể ở đây là trò chuyện, nhắn tin, lập trình Socket với
giao thức TCP/IP đảm bảo cho việc truyền thông tin một cách đáng tin cậy và đúng
thứ tự. Chính vì lý do trên nên em quyết định chọn đề tài “ỨNG DỤNG
MESSENGER SỬ DỤNG TCP/IP SOCKET”.

3


LỜI CẢM ƠN
Để hoàn thành bài đồ án này, em đã nhận được sự hỗ trợ, giúp đỡ của các thầy cô
trong nhà trường. Em xin bày tỏ long biết ơn sâu sắc đến tất cả quý thầy cô đã dạy dỗ,
tạo điều kiện giúp đỡ em trong quá trình phát triển và hoàn thành đề tài.
Đặc biệt em xin chân thành cảm ơn thầy Nguyễn Đỗ Công Pháp - giảng viên
hướng dẫn môn Đồ án cơ sở 4 đã quan tâm giúp đỡ và chỉ dạy em trong quá trình thực
hiện đề tài trong thời gian qua. Bài báo cáo của em sẽ khơng thể hồn thành tốt nếu
khơng có sự hướng dẫn tận tình của giáo viên hướng dẫn.
Vì kinh nghiệm và kiến thức chun ngành cịn hạn chế nên đồ án này không thể
tránh khỏi những thiếu sót, hạn chế. Em rất mong nhận được sự chỉ bảo, đóng góp ý
kiến của q thầy cơ để em có thể bổ sung kiến thức và hồn thiện các kỹ năng của
mình hơn.

Một lần nữa cho phép em xin chân thành cảm ơn các thầy giáo, cô giáo khoa Khoa
học máy tính đã tận tình dạy dỗ, giúp đỡ để em có thể hoạn thành bài Đồ án cơ sở 4
này!

4


NHẬN XÉT
(Của giảng viên hướng dẫn)

1. Tinh thần thái độ của sinh viên trong quá trình làm đề tài:
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..................................................................................
2. Đánh giá chất lượng của đề tài (so với nội dung yêu cầu đã đề ra trong

nhiệm vụ đề tài):
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..................................................................................


Ngày….. tháng….. năm 2021
GIẢNG VIÊN HƯỚNG DẪN
(Ký, ghi rõ họ tên)

5


MỤC LỤC
Trang
MỞ ĐẦU...................................................................................................................... 3
Chương 1
Giới thiệu............................................................................................10
1.1 Tổng quan.....................................................................................................10
1.2 Mục tiêu........................................................................................................10
1.3 Phương pháp, ngôn ngữ và công cụ............................................................10
Chương 2
Nghiên cứu tổng quan........................................................................11
2.1 Các phương pháp.........................................................................................11
2.1.1 Socket là gì?............................................................................................11
2.1.2 Giao thức TCP/IP là gì?...........................................................................11
2.1.3 Giao thức UDP là gì?..............................................................................12
2.2 Ngơn ngữ lập trình Java và Platform JavaFX...........................................12
2.2.1 Ngơn ngữ lập trình Java..........................................................................12
2.2.2 Platform JavaFX.....................................................................................16
2.3 Cơng cụ lập trình và Quản trị cơ sở dữ liệu..............................................16
2.3.1 IntelliJ IDEA...........................................................................................16
2.3.2 Scene Builder 2.0....................................................................................16
2.3.3 Quản trị cơ sở dữ liệu..............................................................................17
2.4 Hạn chế, tồn tại của các phương pháp.......................................................18

2.5 Kết luận........................................................................................................18
Chương 3
Phân tích thiết kế hệ thống................................................................19
3.1 Mơ hình Client-Server.................................................................................19
3.2 Phân tích thiết kế hệ thống..........................................................................20
3.2.1 Xác định các tác nhân (Actor):................................................................20
3.2.2 Xác định các trường hợp sử dụng:..........................................................20
3.2.3 Đặc tả các trường hợp sử dụng................................................................21
3.3 Thiết kế Cơ sở dữ liệu..................................................................................27
3.3.1 Bảng User...............................................................................................27
3.3.2 Bảng Danh sách tất cả cuộc trò chuyện...................................................27
3.3.3 Bảng Danh sách tất cả tin nhắn...............................................................28
3.3.4 Bảng thông tin Server.............................................................................28
3.4 Sự liên kết giữa các bảng.............................................................................29
Chương 4
Triển khai xây dựng...........................................................................31
4.1 Cài đặt..........................................................................................................31
4.2 Demo.............................................................................................................33
Chương 5
Kết luận và Hướng phát triển...........................................................35
5.1 Kết luận........................................................................................................35
5.2 Hướng phát triển.........................................................................................35
DANH MỤC TÀI LIỆU THAM KHẢO.....................................................................36

6


DANH MỤC CÁC BẢNG
Trang
Bảng 1. So sánh TCP và UDP.....................................................................................18

Bảng 2. Sự kiện đăng ký.............................................................................................21
Bảng 3. Biểu đồ Use case Đăng ký.............................................................................22
Bảng 4. Sự kiện đăng nhập..........................................................................................23
Bảng 5. Biểu đồ Use case Đăng nhập..........................................................................23
Bảng 6. Sự kiện tạo cuộc trò chuyện...........................................................................25
Bảng 7. Xóa cuộc trị chuyện......................................................................................25
Bảng 8. user................................................................................................................27
Bảng 9. list_convo.......................................................................................................28
Bảng 10. messages......................................................................................................28
Bảng 11. server_running.............................................................................................29

7


DANH MỤC HÌNH
Trang
Hình 1. Socket trong mơ hình tham chiếu có kiến trúc phân tầng...............................11
Hình 2. Java................................................................................................................13
Hình 3. Q trình biên dịch trong Java........................................................................14
Hình 4. Biểu đồ Use Case tổng quan...........................................................................21
Hình 5. Use case Thay đổi thơng tin cá nhân..............................................................24
Hình 6. User case Tạo cuộc trị chuyện.......................................................................25
Hình 7. Use case Xóa cuộc trị chuyện........................................................................26
Hình 8. Sự liên kết giữa bảng user và bảng messages.................................................29
Hình 9. Sự liên kết giữa bảng list_convo và bảng messages.......................................30
Hình 10. Giao diện làm việc Intellij IDEA..................................................................31
Hình 11. Giao diện làm việc Scene Builder 2.0...........................................................31
Hình 12. Giao diện Xampp.........................................................................................32
Hình 13. Giao diện làm việc Navicat..........................................................................32
Hình 14. Server running..............................................................................................33

Hình 15. Có Client kết nối..........................................................................................33
Hình 16. Giao diện đăng ký và đăng nhập..................................................................34
Hình 17. Giao diện Client...........................................................................................34

8


DANH MỤC CỤM TỪ VIẾT TẮT
STT
1
2
3
4
5
6
7
8

Cụm từ
Công nghệ phần mềm
Công nghệ thông tin
Transmission Control Protocol
Internet Protocol
User Datagram Protocol
Open Systems Interconnection
Java Virtual Machine
Java Runtime Environment

9


Viết tắt
CNPM
CNTT
TCP
IP
UDP
OSI
JVM
JRE


Chương 1

Giới thiệu

1.1 Tổng quan
Việc giao tiếp trong cuộc sống con người là một điều cần thiết và cực kỳ quan
trọng. Có giao tiếp, xã hội mới có thể phát triển. Bên cạnh đó, nhiều nhu cầu khác của
con người như nhu cầu được quan tâm, nhu cầu thông tin, nhu cầu được hòa nhập, nhu
cầu được thừa nhận,… chỉ được thỏa mãn trong quá trình giao tiếp. Hãy thử hình
dung xem, bản thân sẽ như thế nào nếu tự giam mình trong phịng một ngày, khơng
giao tiếp với bất cứ ai, khơng dùng điện thoại, tivi, máy tính?
Đặc biệt là trong năm 2020 vừa rồi đại dịch COVID-19 bùng phát đã khiến rất
nhiều người phải ở nhà, nó càng khiến cho nhu cầu sử dụng ứng dụng giao tiếp tăng
rất cao.
Chính vì yếu tố trên cũng như mong muốn thử thách bản thân, mong muốn tạo ra
một ứng dụng giao tiếp trên desktop cũng như muốn hiểu thêm về Socket trong Java
nên em quyết định xây dựng ứng dụng messenger với TCP/IP socket.

1.2 Mục tiêu

- Xây dựng thành công ứng dụng messenger cho phép người dùng giao tiếp với
nhau, giao tiếp 1-1 và 1-n(group chat).
- Người dùng có thể gửi văn bản, ảnh, file, hoặc sticker cho nhau.

1.3 Phương pháp, ngôn ngữ và công cụ
a) Phương pháp:
- Socket TCP/IP trong Java
b) Ngơn ngữ lập trình:
- Java
- Platform JavaFX
c) Cơng cụ sử dụng:
- Intellij IDEA
- Scene Builder 2.0
- Xampp (database)
- Navicat (phần mềm quản lý cơ sở dữ liệu)

10


Chương 2

Nghiên cứu tổng quan

2.1 Các phương pháp
2.1.1 Socket là gì?
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 1. Socket trong mơ hình tham chiếu có kiến trúc phân tầng


Dữ liệu bên gửi sẽ được đóng gói (Encapsulation) từ tầng trên đến tầng cuối là
tầng vật lí (Physical Layer), sau đó nhờ tầng vật lí này chuyển dữ liệu đến tầng vật lí
máy bên nhận, bên nhận tiến hành giải mã (decapsulation) gói dữ kiện từ tầng dưới
lên tầng trên cùng, là tầng ứng dụng (application layer).
Ở đây, Socket chính là cửa giao tiếp giữa tầng ứng dụng và tầng giao vận
(Transport layer). Nói cách khác, Socket là giao diện do ứng dụng tạo ra trên máy
trạm, quản lí bởi hệ điều hành qua đó các ứng dụng có thể gửi/nhận thơng điệp đến/từ
các ứng dụng khác. Ở đó, Socket sẽ được ràng buộc với một mã số cổng (Port
Number) để giúp tầng giao vận định danh được ứng dụng nhận/gửi thơng điệp. [1]
2.1.2 Giao thức TCP/IP là gì?
 TCP là giao thức truyền tải hướng kết nối (connection-oriented), nghĩa là phải
thực hiện thiết lập kết nối với đầu xa trước khi thực hiện truyền dữ liệu. Tiến
trình thiết lập kết nối ở TCP được gọi là tiến trình bắt tay 3 bước (threeway
handshake).
 Cung cấp cơ chế báo nhận (Acknowledgement): Khi A gửi dữ liệu cho B, B
nhận được thì gửi gói tin cho A xác nhận là đã nhận. Nếu khơng nhận được tin
xác nhận thì A sẽ gửi cho đến khi B báo nhận thì thơi.

11


 Cung cấp cơ chế đánh số thứ tự gói tin (sequencing) cho các đơn vị dữ liệu
được truyền, sử dụng để ráp các gói tin chính xác ở điểm nhận và loại bỏ gói tin
trùng lặp.
 Có các cơ chế điều khiển luồng thích hợp (flow control) để tránh nghẽn xảy ra.
 Hỗ trợ cơ chế full-duplex (truyền và nhận dữ liệu cùng một lúc)
2.1.3 Giao thức UDP là gì?
 Ngược lại với giao thức TCP thì UDP là giao thức truyền tải hướng khơng kết
nối (connectionless). Nó sẽ không thực hiện thao tác xây dựng kết nối trước khi

truyền dữ liệu mà thực hiện truyền ngay lập tức khi có dữ liệu cần truyền (kiểu
truyền best effort) => truyền tải rất nhanh cho dữ liệu của lớp ứng dụng.
 Khơng đảm bảo tính tin cậy khi truyền dữ liệu và khơng có cơ chế phục hồi dữ
liệu (nó khơng quan tâm gói tin có đến đích hay khơng, khơng biết gói tin có bị
mất mát trên đường đi hay không) => dễ bị lỗi.
 Không thực hiện các biện pháp đánh số thứ tự cho các đơn vị dữ liệu được
truyền
 Nhanh và hiệu quả hơn đối với các dữ liệu có kích thước nhỏ và u cầu khắt
khe về thời gian.
 Bản chất không trạng thái nên UDP hữu dụng đối với việc trả lời các truy vấn
nhỏ với số lượng lớn người yêu cầu.

2.2 Ngôn ngữ lập trình Java và Platform JavaFX
2.2.1 Ngơn ngữ lập trình Java
a) Giới thiệu
Java là một trong những ngôn ngữ lập trình hướng đối tượng. Nó được sử dụng
trong phát triển phần mềm, trang web, game hay ứng dụng trên các thiết bị di động.
Java được khởi đầu bởi James Gosling và bạn đồng nghiệp ở Sun MicroSystem
năm 1991. Ban đầu Java được tạo ra nhằm mục đích viết phần mềm cho các sản phẩm
gia dụng, và có tên là Oak.
Java được phát hành năm 1994, đến năm 2010 được Oracle mua lại từ Sun
MicroSystem.
Java được tạo ra với tiêu chí “Viết (code) một lần, thực thi khắp nơi” (Write
Once, Run Anywhere – WORA). Chương trình phần mềm viết bằng Java có thể chạy
trên mọi nền tảng (platform) khác nhau thơng qua một mơi trường thực thi với điều
kiện có mơi trường thực thi thích hợp hỗ trợ nền tảng đó.

12



Hình 2. Java

b) Đặc điểm của ngơn ngữ lập trình Java
- Tương tự C++, hướng đối tượng hoàn toàn:
Trong quá trình tạo ra một ngơn ngữ mới phục vụ cho mục đích chạy được trên
nhiều nền tảng, các kỹ sư của Sun MicroSystem muốn tạo ra một ngôn ngữ dễ học
và quen thuộc với đa số người lập trình. Vì vậy họ đã sử dụng lại các cú pháp của
C và C++.
Tuy nhiên, trong Java thao tác với con trỏ bị lược bỏ nhằm đảo bảo tính an tồn
và dễ sử dụng hơn. Các thao tác overload, goto hay các cấu trúc như struct và
union cũng được loại bỏ khỏi Java.
- Độc lập phần cứng và hệ điều hành:
Một chương trình viết bằng ngơn ngữ Java có thể chạy tốt ở nhiều môi trường
khác nhau. Gọi là khả năng “cross-platform”. Khả năng độc lập phần cứng và hệ
điều hành được thể hiện ở 2 cấp độ là cấp độ mã nguồn và cấp độ nhị phân.
Ở cấp độ mã nguồn: Kiểu dữ liệu trong Java nhất quán cho tất cả các hệ điều
hành và phần cứng khác nhau. Java có riêng một bộ thư viện để hỗ trợ vấn đề này.
Chương trình viết bằng ngơn ngữ Java có thể biên dịch trên nhiều loại máy khác
nhau mà không gặp lỗi.
Ở cấp độ nhị phân: Một mã biên dịch có thể chạy trên nhiều nền tảng khác nhau
mà không cần dịch lại mã nguồn. Tuy nhiên cần có Java Virtual Machine để thông
dịch đoạn mã này.

13


- Ngơn ngữ thơng dịch:
Ngơn ngữ lập trình thường được chia ra làm 2 loại (tùy theo các hiện thực hóa
ngơn ngữ đó) là ngơn ngữ thơng dịch và ngơn ngữ biên dịch.
o


Thơng dịch (Interpreter): Nó dịch từng lệnh rồi chạy từng lệnh, lần sau
muốn chạy lại thì phải dịch lại.

o

Biên dịch (Compiler): Code sau khi được biên dịch sẽ tạo ra 1 file thường là
.exe, và file .exe này có thể đem sử dụng lại khơng cần biên dịch nữa.

Ngơn ngữ lập trình Java thuộc loại ngơn ngữ thơng dịch. Chính xác hơn, Java là
loại ngơn ngữ vừa biên dịch vừa thông dịch. Cụ thể như sau
Khi viết mã, hệ thống tạo ra một tệp .java. Khi biên dịch mã nguồn của chương
trình sẽ được biên dịch ra mã byte code. Máy ảo Java (Java Virtual Machine) sẽ
thông dịch mã byte code này thành machine code (hay native code) khi nhận được
yêu cầu chạy chương trình.

Hình 3. Quá trình biên dịch trong Java

Ưu điểm: Phương pháp này giúp các đoạn mã viết bằng Java có thể chạy được
trên nhiều nền tảng khác nhau. Với điều kiện là JVM có hỗ trợ chạy trên nền tảng
này.
Nhược điểm: Cũng như các ngơn ngữ thơng dịch khác, q trình chạy các đoạn
mã Java là chậm hơn các ngôn ngữ biên dịch khác (tuy nhiên vẫn ở trong một mức
chấp nhận được).
- Cơ chế thu gom rác tự động:
Khi tạo ra các đối tượng trong Java, JRE sẽ tự động cấp phát không gian bộ
nhớ cho các đối tượng ở trên heap.
Với ngôn ngữ như C \ C++, bạn sẽ phải yêu cầu hủy vùng nhớ mà bạn đã cấp
phát, để tránh việc thất thốt vùng nhớ. Tuy nhiên vì một lý do nào đó, bạn khơng
hủy một vài vùng nhớ, dẫn đến việc thất thốt và làm giảm hiệu năng chương

trình.
14


Ngơn ngữ lập trình Java hỗ trợ cho bạn điều đó, nghĩa là bạn khơng phải tự gọi
hủy các vùng nhớ. Bộ thu dọn rác của Java sẽ theo vết các tài ngun đã được cấp.
Khi khơng có tham chiếu nào đến vùng nhớ, bộ thu dọn rác sẽ tiến hành thu hồi
vùng nhớ đã được cấp phát.
- Đa luồng:
Java hỗ trợ lập trình đa tiến trình (multithread) để thực thi các công việc đồng
thời. Đồng thời cũng cung cấp giải pháp đồng bộ giữa các tiến trình (giải pháp sử
dụng priority…).
-Tính tốn an tồn và bảo mật:
o

o

Tính an tồn
- Ngơn ngữ lập trình Java u cầu chặt chẽ về kiểu dữ liệu.
-

Dữ liệu phải được khai báo tường minh.

-

Không sử dụng con trỏ và các phép toán với con trỏ.

-

Java kiểm soát chặt chẽ việc truy nhập đến mảng, chuỗi. Không cho

phép sử dụng các kỹ thuật tràn. Do đó các truy nhập sẽ khơng vượt q
kích thước của mảng hoặc chuỗi.

-

Q trình cấp phát và giải phóng bộ nhớ được thực hiện tự động.

-

Cơ chế xử lý lỗi giúp việc xử lý và phục hồi lỗi dễ dàng hơn.

Tính bảo mật
- Java cung cấp một mơi trường quản lý chương trình với nhiều mức khác
nhau.

+ Mức 1: Chỉ có thể truy xuất dữ liệu cũng như phương phức thơng qua
giao diện mà lớp cung cấp.
+ Mức 2: Trình biên dịch kiểm soát các đoạn mã sao cho tuân thủ các
quy tắc của ngơn ngữ lập trình Java trước khi thơng dịch.
+ Mức 3: Trình thơng dịch sẽ kiểm tra mã byte code xem các đoạn mã
này có đảm bảo được các quy định, quy tắc trước khi thực thi.
+ Mức 4: Java kiểm soát việc nạp các lớp vào bộ nhớ để giám sát việc vi
phạm giới hạn truy xuất trước khi nạp vào hệ thống.
- Máy ảo Java (JVM – Java Virtual Machine):
Để đảm bảo tính đa nền, Java sử dụng cơ chế Máy ảo của Java.
ByteCode là ngôn ngữ máy của Máy ảo Java tương tự như các lệnh nhị phân
của các máy tính thực.
Một chương trình sau khi được viết bằng ngơn ngữ Java (có phần mở rộng là
.java) phải được biên dịch thành tập tin thực thi được trên máy ảo Java (có phần
15



mở rộng là .class). Tập tin thực thi này chứa các chỉ thị dưới dạng mã Bytecode
mà máy ảo Java hiểu được phải làm gì.
Khi thực hiện một chương trình, máy ảo Java lần lượt thông dịch các chỉ thị
dưới dạng Bytecode thành các chỉ thị dạng nhị phân của máy tính thực và thực thi
thực sự chúng trên máy tính thực (cịn gọi là khả năng khả chuyển).
Máy ảo thực tế đó là một chương trình thơng dịch. Vì thế các hệ điều hành
khác nhau sẽ có các máy ảo khác nhau. Để thực thi một ứng dụng của Java trên
một hệ điều hành cụ thể, cần phải cài đặt máy ảo tương ứng cho hệ điều hành đó.
JVM cung cấp mơi trường thực thi cho chương trình Java (cịn gọi là khả năng
độc lập với nền).
Có nhiều JVM cho các nền tảng khác nhau chẳng hạn như: Windows, Liux, và
Mac.
2.2.2 Platform JavaFX
JavaFX được thiết kế để cung cấp cho các nhà phát triển Java với một nền tảng
đồ họa nhẹ, hiệu suất cao mới. Mục đích là cho các ứng dụng mới để sử dụng JavaFX
hơn Swing để xây dựng các ứng dụng giao diện người dùng đồ họa (GUI). Điều này
khơng có nghĩa là Swing đó là lỗi thời. Số lượng lớn các ứng dụng được sử dụng đã
được xây dựng sử dụng Swing có nghĩa là nó sẽ trở thành một phần của Java API cho
một thời gian dài được nêu ra. Điều đặc biệt là các ứng dụng này có thể kết hợp chức
năng JavaFX vì hai API đồ họa chạy song song nhau liền mạch.
JavaFX có thể được sử dụng để tạo giao diện người dùng đồ họa cho bất kỳ nền
tảng (ví dụ, máy tính để bàn, web, điện thoại di động, vv ..).

2.3 Cơng cụ lập trình và Quản trị cơ sở dữ liệu
2.3.1 IntelliJ IDEA
Intellij IDEA là một trình IDE dùng để lập trình Java (nó cũng được sử dụng để
lập trình một số ngơn ngữ khác như Node.js, python…)
Nhìn chung Intellij IDEA khá giống với Eclipse vì nó chủ yếu dùng cho Java

nhưng vẫn có thể hỗ trợ các ngơn ngữ khác và có rất nhiều các plugin hỗ trợ.
2.3.2 Scene Builder 2.0
Scene Builder là một công cụ thiết kế trực quan, cho phép người dùng nhanh
chóng thiết kế giao diện người dùng của ứng dụng JavaFX mà không cần phải viết
code. Bạn có thể kéo và thả các thành phần giao diện người dùng đến một khu vực
làm việc, thay đổi tính chất của chúng, áp dụng các style, và FXML cho Layout vừa
được tạo ra tự động bên dưới. Kết quả có được là một tập tin FXML mà sau đó có thể
được kết hợp với một dự án Java bằng cách liên kết các giao diện với logic của ứng
dụng.
16


2.3.3 Quản trị cơ sở dữ liệu
a) Xampp
Xampp là chương trình tạo máy chủ Web (Web Server) được tích hợp sẵn
Apache, PHP, MySQL, FTP Server, Mail Server và các công cụ như
phpMyAdmin. Khơng như Appserv, Xampp có chương trình quản lý khá tiện lợi,
cho phép chủ động bật tắt hoặc khởi động lại các dịch vụ máy chủ bất kỳ lúc nào.
Xampp là một mã nguồn mở máy chủ web đa nền được phát triển bởi Apache
Friends, bao gồm chủ yếu là Apache HTTP Server, MariaDB database, và
interpreters dành cho những đối tượng sử dụng ngôn ngữ PHP và Perl. Xampp là
viết tắt của Cross-Platform (đa nền tảng-X), Apache (A), MariaDB (M), PHP (P)
và Perl (P). Nó phân bố Apache nhẹ và đơn giản, khiến các lập trình viên có thể dễ
dàng tạo ra máy chủ web local để kiểm tra và triển khai trang web của mình. Tất cả
mọi thứ cần cho phát triển một trang web - Apache (ứng dụng máy chủ), Cơ sở dữ
liệu (MariaDB) và ngôn ngữ lập trình (PHP) được gói gọn trong 1 tệp. Xampp
cũng là 1 đa nền tảng vì nó có thể chạy tốt trên cả Linux, Windows và Mac. Hầu
hết việc triển khai máy chủ web thực tế đều sử dụng cùng thành phần như XAMPP
nên rất dễ dàng để chuyển từ máy chủ local sang máy chủ online.
b) Phần mềm quản lý CSDL Navicat

Navicat Premium là một công cụ quản lý kết nối đa cơ sở dữ liệu. Với các kết
nối thành lập cho các loại hình cơ sở dữ liệu khác nhau, Navicat Premium hỗ trợ
truyền dữ liệu giữa MySQL, SQLite, Oracle và PostgreSQL. Nó cịn hỗ trợ hầu hết
các tính năng trong MySQL, SQLite, Oracle và PostgreSQL bao gồm cả
Procedure, Event, Trigger, Function...
Nó cho phép người dùng kết nối đến các máy chủ localhost và remote,
MySQL, PostgreSQL và Oracle, cung cấp một loạt các công cụ như chức năng
quản lý cơ sở dữ liệu, xuất nhập dữ liệu, cũng như sao lưu và truyền dữ liệu. Các
máy chủ từ xa có thể chạy trên bất kỳ nền tảng Linux, Unix, MacOS X và
Windows.

17


2.4 Hạn chế, tồn tại của các phương pháp
- So sánh TCP/IP và UDP

TCP

UDP

Hướng kết nối

Hướng không kết nối

Độ tin cậy cao

Độ tin cậy thấp

Gửi dữ liệu dạng luồng byte


Gửi đi Datagram

Khơng cho phép mất gói tin

Cho phép mất gói tin

Đảm bảo việc truyền dữ liệu

Không đảm bảo việc truyền dữ liệu

Có sắp xếp thứ tự các gói tin

Khơng sắp xếp thứ tự các gói tin

Tốc độ truyền thấp hơn UDP

Tốc độ truyền cao
Bảng 1. So sánh TCP và UDP

2.5 Kết luận
Vì trong ứng dụng giao tiếp cụ thể ở đây là ứng dụng chat(trị chuyện), tin nhắn
hoặc thơng tin(từ người gửi) phải được gửi đến đúng đích(người nhận) và từ sự so
sánh ở mục 2.4 bên trên nên ta có thể thấy việc sử dụng giao thức TCP/IP là tối ưu
nhất trong lập trình ứng dụng messenger.

18


Chương 3


Phân tích thiết kế hệ thống

3.1 Mơ hình Client-Server


Giai đoạn 1: Server tạo Socket, gán số hiệu cổng và lắng nghe yêu cầu nối
kết. Server sẵn sàng phục vụ Client.socket(): Server yêu cầu tạo một socket để
có thể sử dụng các dịch vụ của tầng vận chuyển.
o

bind(): Server yêu cầu gán số hiệu cổng (port) cho socket.

o

listen(): Server lắng nghe các yêu cầu nối kết từ các client trên cổng đã
được gán.



Giai đoạn 2: Client tạo Socket, yêu cầu thiết lập một nối kết với Server.
o

socket(): Client yêu cầu tạo một socket để có thể sử dụng các dịch vụ
của tầng vận chuyển, thông thường hệ thống tự động gán một số hiệu
cổng còn rảnh cho socket của Client.

o

connect(): Client gởi yêu cầu nối kết đến server có địa chỉ IP và Port xác

định.

o

accept(): Server chấp nhận nối kết của client, khi đó một kênh giao tiếp
ảo được hình thành, Client và server có thể trao đổi thơng tin với nhau
thông qua kênh ảo này.



Giai đoạn 3: Trao đổi thông tin giữa Client và Server.
o

Sau khi chấp nhận yêu cầu nối kết, thông thường server thực hiện lệnh
read() và nghẽn cho đến khi có thơng điệp u cầu (Request Message) từ
client gởi đến.

o

Server phân tích và thực thi yêu cầu. Kết quả sẽ được gởi về client bằng
lệnh write().

o

Sau khi gởi yêu cầu bằng lệnh write(), client chờ nhận thông điệp kết
quả (ReplyMessage) từ server bằng lệnh read().



Giai đoạn 4: Kết thúc phiên làm việc.

o

Các câu lệnh read(), write() có thể được thưc hiện nhiều lần (ký hiệu
bằng hình ellipse).

o

Kênh ảo sẽ bị xóa khi Server hoặc Client đóng socket bằng lệnh close().

19


3.2 Phân tích thiết kế hệ thống
3.2.1 Xác định các tác nhân (Actor):
- Người dùng (Client): người dùng sử dụng ứng dụng để trò chuyện với
người khác.
- Server: Nơi xử lý, nhận dữ liệu từ người gửi và chuyển đến đúng đích.
3.2.2 Xác định các trường hợp sử dụng:
- Đăng ký
- Đăng nhập
- Thay đổi thông tin cá nhân
- Thêm cuộc trị chuyện
- Xóa cuộc trị chuyện
- Nhắn tin, trao đổi file, hình ảnh với người dùng khác

20


Hình 4. Biểu đồ Use Case tổng quan


3.2.3 Đặc tả các trường hợp sử dụng
3.2.3.1. Đăng ký thành viên
● Tác nhân: Người dùng





Điều kiện trước: Người dùng ghé thăm hệ thống, chưa đăng ký thành viên.
Điều kiện sau: Người dùng trở thành thành viên của hệ thống.
Mô tả: Người dùng cung cấp đầy đủ thông tin cần thiết khi đăng ký thành viên.
Các sự kiện chính:
Hành động của tác nhân

Hành động của hệ thống

1. Một người dùng dử dụng app và
muốn đăng kí thành viên
3. Người dùng cung cấp đầy đủ thông
tin cần thiết mà hệ thống yêu cầu và
nhấn Đăng ký.
5. Người dùng đã trở thành thành viên
của hệ thống.

2. Hiển thị form đăng ký cho người
dùng.
4. Hệ thống kiểm tra và cập nhật
thông tin của người dùng vừa đăng ký
vào danh sách thành viên.


 Các sự kiện phụ:
Hành động của tác nhân

Hành động của hệ thống

3. Người đọc không cung cấp đủ thông 4. Hệ thống sẽ thông báo yêu cầu
tin cần thiết hoặc sử dụng tài khoản đã người đọc nhập lại đầy đủ thông tin
tồn tại.
hoặc thoát ra khỏi form đăng ký.
Bảng 2. Sự kiện đăng ký

21




Ca sử dụng Đăng ký thành viên được biểu diễn bởi biểu đồ sau:

Bảng 3. Biểu đồ Use case Đăng ký

3.2.3.2. Đăng nhập

 Các tác nhân: Thành viên
 Điều kiện trước: Người vào hệ thống đã đăng ký là thành viên của hệ
thống.
 Điều kiện sau: Tên và mật khẩu của thành viên hợp lệ, đăng nhập thành
công.
 Mô tả: Người dùng nhập đăng nhập và mật khẩu, hệ thống cho phép đăng
nhập thành công nếu là thành viên của hệ thống.
 Các sự kiện chính:

Hành động của tác nhân

Hành động của hệ thống

. 1. Thành viên chọn chức năng
2.
2.Hệ thống hiển thị form đăng nhập.
đăng nhập.

.

4.Hệ thống kiểm tra tên và mật
3.Thành viên nhập tên và mật khẩu
khẩu của thành viên có hợp lệ
vào form đăng nhập.
khơng.
 Các sự kiện phụ:
Hành động của tác nhân

Hành động của hệ thống

22


3.Thành viên đăng nhập lại nếu mật5. 4.Hệ thông báo nhập sai thơng tin,
khẩu hoặc tài khoản khơng chính hiển thị yêu cầu nhập lại.
xác.
7.
Bảng 4. Sự kiện đăng nhập




Ca sử dụng Đăng nhập được biểu diễn bởi biểu đồ sau:

Bảng 5. Biểu đồ Use case Đăng nhập

3.2.3.3. Thay đổi thông tin cá nhân
 Tác nhân: Thành viên (người dùng hện đang đăng nhập)
 Điều kiện trước: Người dùng đã đăng nhập
 Điều kiện sau: Người dùng muốn thay đổi thông tin cá nhân
 Mô tả: Người dùng click vào avatar, thay đổi thơng tin sau đó bấm xác nhận
 Các sự kiện chính:

Hành động của tác nhân
Hành động của hệ thống
1.Người dùng kích vào avatar chọn 2.Hệ thống hiển thị form để điền
thay đổi thông tin cá nhân.
thông tin cần thay đổi.
3.Xác nhận thay đổi.

4.Hệ thống nhận dữ liệu, tiến hành
update vào csdl.

 Các sự kiện phụ:

Hành động của tác nhân

Hành động của hệ thống
23



3. Nhập sai định dạng thông tin.

4.Hiển thị thông báo yêu cầu nhập
lại.

Bảng 6. Sự kiện thay đổi thông tin cá nhân

Hình 5. Use case Thay đổi thơng tin cá nhân

3.2.3.4. Tạo cuộc trò chuyện mới
 Tác nhân: Thành viên (người dùng hện đang đăng nhập)
 Điều kiện trước: Người dùng đã đăng nhập
 Điều kiện sau: Người dùng muốn tạo cuộc trò chuyện mới và đối tượng cần
thêm vào cuộc trị chuyện phải tồn tại
 Mơ tả: Người dùng click vào nút tạo cuộc trò chuyện, nhập tên đối phương,
nhập lời nhắn sau đó bấm xác nhận
 Các sự kiện chính:

Hành động của tác nhân
Hành động của hệ thống
1.Người dùng kích vào nút thêm 2.Hệ thống hiển thị form để tạo cuộc
cuộc trò chuyện.
trò chuyện.
3.Người dùng nhập tên người dùng 4.Hệ thống hiển thị danh sách người
còn lại của cuộc trị chuyện.
dùng có tên gần giống.
5. Người dùng chọn, sau đó nhập 6. Hệ thống nhận dữ liệu, tiến hành
lời nhắn và bấm OK.
tạo cuộc trò chuyện, thêm vào danh

sách cuộc trị chuyện hiện có và lưu
tất cả dữ liệu cần thiết vào cơ sở dữ
liệu.
 Các sự kiện phụ:
24


Hành động của tác nhân
Hành động của hệ thống
3. Nhập sai tên người dùng hoặc 4.Không hiển thị danh sách và
người dùng chưa được tạo.
không cho phép nút OK hoạt động.
Bảng 7. Sự kiện tạo cuộc trị chuyện

Hình 6. User case Tạo cuộc trị chuyện

3.2.3.5. Xóa cuộc trị chuyện
 Tác nhân: Thành viên (người dùng hện đang đăng nhập)
 Điều kiện trước: Cuộc trò chuyện tồn tại
 Điều kiện sau: Xóa cuộc trị chuyện
 Mơ tả: Người dùng click vào nút xóa cuộc trị chuyện sau đó xác nhận. Sau khi
thực hiện hành động này sẽ không thể khôi phục
 Các sự kiện chính:

Hành động của tác nhân
Hành động của hệ thống
1.Người dùng kích vào nút xóa 2.Hệ thống hiển thị thơng báo u
cuộc trị chuyện.
cầu xác nhận để xóa cuộc trị
3.Người dùng xác nhận muốn xóa chuyện.

cuộc trị chuyện.

4.Hệ thống thực hiện xóa cuộc trị
chuyện và tất cả dữ liệu liên quan
đến cuộc trị chuyện đó trong CSDL.
Bảng 8. Xóa cuộc trị chuyện

25


×