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

Ứng dụng chat socket qua mạng Lan hỗ trợ đa người dùng và quản lí dữ liệu sql

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.29 MB, 34 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ
----------

BÀI TẬP LỚN LẬP TRÌNH MẠNG
ĐỀ TÀI: ỨNG DỤNG CHAT QUA MẠNG LAN HỖ TRỢ ĐA
NGƯỜI DÙNG VÀ QUẢN LÍ DỮ LIỆU SQL

Giảng viên hướng dẫn:

TS HÀ MẠNH ĐÀO

Sinh viên thực hiện :

LÊ ĐĂNG KHÔI

Lớp

KTMT1-K11

:

HÀ NỘI – 2019


TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA ĐIỆN TỬ
----------

BÀI TẬP LỚN LẬP TRÌNH MẠNG
ĐỀ TÀI: ỨNG DỤNG CHAT QUA MẠNG LAN HỖ TRỢ ĐA


NGƯỜI DÙNG VÀ QUẢN LÍ DỮ LIỆU SQL

Giảng viên hướng dẫn:

TS HÀ MẠNH ĐÀO

Sinh viên thực hiện :

LÊ ĐĂNG KHÔI

Mã sinh viên

:

1141250008

Lớp

:

KTMT1-K11

HÀ NỘI – 2019


MỤC LỤC
CHƯƠNG 1. MỞ ĐẦU ................................................................................................ 1
1.1

Bối cảnh, lý do thực hiện đề tài .......................................................................1


1.2

Cơ sở lập trình .................................................................................................1

CHƯƠNG 2. CƠ SỞ LÝ THUYẾT .............................................................................2
2.1

Yêu cầu của đề tài ...........................................................................................2

2.2

Giới thiệu mơ hình Client/Server ....................................................................2

2.3

Giới thiệu giao thức IP/TCP ............................................................................3

2.4

Lập trình mạng trong Java. ..............................................................................4

CHƯƠNG 3 : PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH .......................................6
3.1

Phân tích u cầu .............................................................................................6

3.2

Phân tích chức năng. .......................................................................................6


3.3

Phân tích thiết kế chương trình. ......................................................................7

3.4

Thiết kế hệ thống: ............................................................................................8

CHƯƠNG 4 : TRIỂN KHAI THỰC HIỆN VÀ KẾT QUẢ ......................................14
4.1

Môi trường triển khai ....................................................................................14

4.2

Kết quả thực hiện. .........................................................................................14

4.3

Chương trình .................................................................................................17


LỜI CẢM ƠN
Sau quá trình học tập và nghiên cứu em đã hồn thành Bài Tập Lớn của mình
về “Ứng dụng chat socket qua mạng Lan hỗ trợ đa người dùng và quản lí dữ
liệu sql” dưới sự hướng dẫn và chỉ bảo tận tình của TS. Hà Mạnh Đào. Với tình
cảm chân trọng, em xin chân thành cảm ơn TS. Hà Mạnh Đào đã hướng dẫn chỉ
bảo em hoàn thành Bài Tập Lớn.
Trong q trình trình bày khó tránh khỏi sai sót, rất mong các thầy, cơ bỏ qua.

Đồng thời do trình độ lý luận cũng như kinh nghiệm cịn hạn chế nên bài báo
cáo khơng thể tránh khỏi những thiếu sót, chúng em rất mong nhận được ý kiến
đóng góp thầy, cơ để em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt
hơn trong những bài báo cáo sau.
Em xin chân thành cảm ơn!


CHƯƠNG 1. MỞ ĐẦU
1.1 Bối cảnh, lý do thực hiện đề tài
Hiện nay mạng internet toàn cầu đã phát triển rất mạnh, đáp ứng rất tốt
các nhu cầu về thông tin khoa học, giải trí, liên lạc, mua bán, quảng cáo v.v...
của con người. Internet đã trở thành một thành phần không thể thiếu với cuộc
sống hiện đại. Về bản chất, Internet chẳng qua là một hệ thống mạng, liên kết
các máy tính trên tồn thế giới lại theo những chuẩn chung của nó. Với phạm vi
nhỏ hơn nhưng cũng rất tương tự, có những mạng khác đó là WAN, LAN.., mỗi
mơ hình đó đều được ứng dụng rất nhiều tiện ích khác nhau.
Với mục tiêu để cho các sinh viên ra trường với một kiến thức tốt về mạng,
về lập trình ứng dụng trên mạng để có thể làm được nhiều việc khác nhau, bộ
mơn lập trình mạng ra đời. Vì vậy, ngày hơm nay, lúc em đang học về lập trình
mạng, đã tìm được đề tài với tên “Ứng dụng chat qua mạng lan hỗ trợ đa người
dùng và quản lí dữ liệu SQL”, điều đó giúp em thực hành để có cơ hội hiểu rõ
hơn về mạng, về lập trình mạng – một lĩnh vực lập trình rất thú vị này.

1.2 Cơ sở lập trình
Ứng dụng hoạt động dựa vào giao thức IP/TCP để truyền dữ liệu giữa hai
máy khác nhau, cụ thể ở đây là một máy server để cung cấp dịch vụ và nhiều
máy client sử dụng dịch vụ do máy server cung cấp để cho người dùng sử dụng.
Ngơn ngữ lập trình ở đây là ngơn ngữ Java (Phiên bản J2SE 1.6) vì Java
là ngơn ngữ có thể được sử dụng để viết ứng dụng chạy trên hầu hết các thiết bị
(ở đây ta quan tâm tới thiết bị có hỗ trợ mạng). Trọng điểm, có mấy khả năng

nổi trội do Java cung cấp mà ta có thể sử dụng là :
- Lập trình đa tuyến trình (Cùng 1 ứng dụng nhưng có thể chạy nhiều tiến
trình song song với nhau thay vì cứ phải tiến trình này đợi tiến trình kia
kết thúc mới có thể thực hiện)
- Java là một nền tảng có thể chạy trên nhiều loại thiết bị với nhiều hệ điều
hành khác nhau nên có phạm vi ứng dụng rất rộng rãi.
- Lập trình mạng. Lớp quan trọng nhất mà ta sử dụng là lớp Socket và
ServerSocket.
1


CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1

Yêu cầu của đề tài

Viết chương trình Client/Server cho phép nhiều người sử dụng có thể gửi
tin nhắn cho nhau dưới dạng một phòng chat room và có thêm chức năng gửi
file.

2.2 Giới thiệu mơ hình Client/Server
Server được hiểu là máy chủ, thường là một hệ thống máy lớn, có bộ xử
lý mạnh, có khả năng hoạt động đáng tin cậy, có khả năng lưu trữ dữ liệu lớn,
nó chuyên quản lý tài nguyên (chủ yếu là cơ sở dữ liệu), cung cấp các dịch vụ
mạng cho các máy khách (client) sử dụng. Bình thường nó chạy suốt thời gian
thực và sẵn sàng chấp nhận các yêu cầu kết nối và các yêu cầu dịch vụ khác từ
máy khách.
Client là máy khách, nó thường được sử dụng bởi người dùng cuối. Nó
hoạt động dựa trên việc sử dụng dịch vụ mà máy server cung cấp để thực hiện
các công việc mà người dùng cuối mong muốn.

Quy trình hoạt động của mơ hình này lặp lại 2 quá trình như sau :
- Client gửi yêu cầu lên server.
- Server nhận được yêu cầu thì sẻ xử lý thích hợp và trả lời lại client.

Mơ hình Client/Server

2


2.3 Giới thiệu giao thức IP/TCP
2.4.1 Giới thiệu về TCP
Giao thức TCP (Transmission Control Protocol) là giao thức hướng kết
nối (connection-oriented), nó địi hỏi thiết lập kết nối trước khi bắt đầu gửi
dữ liệu và kết thúc kết nối khi việc gửi dữ liệu hoàn tất theo đúng thứ tự: thiết
lập kết nối, truyền dữ liệu và kết thúc kết nối.

2.4.2 Giới thiệu về IP.
IP là địa chỉ của một máy tính trên mạng, dựa vào địa chỉ IP giao thức
TCP có thể truyền dữ liệu chính xác từ một máy này qua máy kia thông qua
hệ thống mạng. Ở trên mạng, một máy tính sẻ có một địa chỉ IP khác nhau,
từ địa chỉ IP có thể biết được máy nào trên mạng và ngược lại.

2.4.3 Giới thiệu về cổng Port.
Với IP, giao thức TCP chỉ mới có thể truyền dữ liệu chính xác từ máy này
qua máy kia mà chưa thể truyền chính xác đến từng ứng dụng trên máy được.
Hiện nay, các hệ thống máy thông thường hoạt động theo chế độ đa nhiệm,
nghĩa là có nhiều ứng dụng chạy cùng một lúc và trong đó có thể có nhiều
ứng dụng sử dụng dịch vụ mạng. Yêu cầu, khi máy chủ A truyền dữ liệu cho
một ứng dụng u trên máy B thì trên máy B phải đảm bảo dữ liệu đó phải đến
được ứng dụng u, chứ khơng phải ứng dụng v.

Để thực hiện điều đó thì máy chủ A khi truyền dữ liệu đi thì trên dữ liệu
đó có một thành phần thơng tin giúp máy B xác định được đúng ứng dụng u.
Phần thông tin đó chính là địa chỉ port trên máy B, nó có thể hiểu là lỗ cắm
ảo trên máy B mà ứng dụng u đã đăng ký để độc quyền sử dụng nhằn nhận
dữ liệu từ máy chủ A.
Trên thực tế, địa chỉ port là một số nguyên 2 byte có giá trị từ 0 đến 65535.
Nó có đặc điểm :
- Giá trị từ 0 đến 1023 là các cổng phổ biến dành cho các ứng dụng thông
dụng như http: 80, mail : 25, ftp : 21, Telnet 23.... Các giá trị cịn lại có
thể được sử dụng linh hoạt.
- Mỗi cổng trong mỗi thời điểm được sử dụng cho tối đa là 1 ứng dụng. Ví
dụ như một ứng dụng nào đó đã sử dụng cổng 55 thì ứng dụng khác không

3


thể sử dụng cổng 55 đó nữa chừng nào ứng dụng trước đó chưa có đóng
cổng 55 lại.

2.4.4 Giới thiệu về Socket.
- Socket là một khái niệm để định vị một dịch vụ của một máy tính trên
mạng khi kết hợp hai khái niệm IP và Port lại.
- Socket có những nhiệm vụ như sau :
 Gắn một cổng trên máy
 Lắng nghe các kết nổi.
 Kết nối/Đóng kết nối đến máy tính ở xa qua cổng đã gắn
 Gửi/nhận dữ liệu
 Lắng nghe dữ liệu đến
Thực chất, Socket chẳng qua là sự kết hợp giữa địa chỉ IP của máy tính và
cổng Port mà ứng dụng sử dụng. Chính vì sự kết hợp đó mà nó trở thành một

khái niệm mà từ đó, các ngơn ngữ lập trình có chứa các gói, các giao diện lập
trình (API) để hỗ trợ các nhà lập trình dễ dàng trong việc lâp trình liên quan đến
mạng qua giao thức TCP. Điển hình là ngôn ngữ Java mà em sẻ giới thiệu ngay
sau đây.

2.4 Lập trình mạng trong Java.
2.4.1 Gói ServerSocket
Nhiệm vụ chính :
 Mở một cổng kết nối trên server, sẵn sàng hoạt động trên cổng đó.
public Socket(int port) : Tạo cổng kết nối trên cổng port.

 Lắng nghe, chờ đợi các yêu cầu kết nối trên cổng đó và kết nối khi
có yêu cầu.
public accept():Chấp nhận một kết nối và trả về một đối tượng
Socket mô tả nguồn đã được kết nối đến.

4


 Tạo luồng dữ liệu vào ra để có thể truyền dữ liệu trên cổng đến một
socket ở máy khách. (Đây là chức năng quan trọng nhất).
getInputStream() : Trả về một luồng mà có thể nhập dữ liệu vào.
getOutputStream() : Trả về một luồng ghi dữ liệu.

 Đóng kết nối lúc khơng sử dụng.
close() : Đóng kết nối khi khơng cần

2.4.2 Gói Socket.
Nhiệm vụ chính
 Kết nối tới một máy chủ thông qua địa chỉ IP và số hiệu cổng trên máy

chủ đó.
Public

Socket(InetAddress

address, int port)

 Tạo luồng dữ liệu vào ra
Public

OutputStream getOutputStream() ;

Public

InputStream getInputStream() ;

 Đóng kết nối.
Public void

Close();

Đóng kết nối

2.4.3 Một số gói, lớp bổ trợ khác.
a. Gói Swing, awt.event : tạo giao diện người dùng
b. Gói Runnable, Thread : Hỗ trợ đa tiến trình
c. Gói java.io : Cung cấp các lớp vào ra dữ liệu

5



CHƯƠNG 3 : PHÂN TÍCH THIẾT KẾ CHƯƠNG
TRÌNH
3.1 Phân tích yêu cầu
Hiện nay, mạng LAN phát triển rất mạnh cả trong trường học, các
cơ quan tổ chức và ở cả các hộ gia đình. Chính điều đó kéo theo nhu cầu
liên lạc trao đổi thông tin trong mạng LAN cũng phát triển theo. Chính vì
vậy, một chương trình Chat phục vụ cho nhu cầu liên lạc, trao đổi thông
tin trong mạng LAN là rất cần thiết.

3.2 Phân tích chức năng.
3.1.1

Trên Client:



Đăng kí và đăng nhập vào server với một user do người dùng tự
chọn



Username và password của người dùng được lưu trên SQL Server



Nhận danh sách các user đang online trên server.




Gửi tin nhắn tới một người hoặc tất cả mọi người online khác trên
server.



Thực hiện gửi file đến một máy client khác



Nhận tin nhắn từ user khác gửi tới.



Đăng xuất tài khoản.

3.1.2

Trên Server:



Tạo cổng kết nối và sẵn sàng đón nhận các sự kết nối từ client



Xử lý yêu cầu đăng nhập từ client
 Nếu nickname chưa có đăng nhập từ trước thì cho đăng nhập
6



 Nếu đã có một ai đó đăng nhập từ trước với nickname đó thì cho
người đăng nhập trước đó phải đăng xuất và cho người mới đăng
nhập vào.


Trả về danh sách các user online cho user có yêu cầu.



Nhận tin nhắn từ một user và chuyển tiếp tới các user khác tương
ứng theo yêu cầu của user gửi.



Loại user khi user yêu cầu đăng xuất.



Xác nhận gửi file của đến user được yêu cầu



Cho phép người sử dụng theo dõi các thành viên đăng nhập, đăng
xuất.

3.3 Phân tích thiết kế chương trình.
Server

Client


Main Form

Login Form

ServerThread

Main Form

SocketThread
ClientThread

7


3.4 Thiết kế hệ thống:
3.4.1

Sơ đồ Usecase tổng thể

Sơ đồ Usecase tổng thể

 Danh sách các Stakeholder:
 Người dùng: Tất cả các người dùng đang vào máy khách, có chức năng
kết nối tới máy chủ, gửi tin nhắn, gửi tập tin, đăng nhập.
 Người quản trị: có thể truy cập và quản lý máy chủ, có quyền khởi
động máy chủ.

8



3.4.2

Sơ đồ hoạt động

Sơ đồ hoạt động Kết nối tới máy chủ.

Sơ đồ hoạt động Đăng nhập.

9


Sơ đồ hoạt động Đăng ký.

10


Sơ đồ hoạt động Gửi tập tin.
3.4.3

Sơ đồ tuần tự

11


Sơ đồ tuần tự Kết nối tới máy chủ.

Sơ đồ tuần tự Đăng nhập.

12



Sơ đồ tuần tự Đăng ký.

13


CHƯƠNG 4 : TRIỂN KHAI THỰC HIỆN VÀ KẾT
QUẢ
4.1

Môi trường triển khai

- Hệ điều hành : Microsoft Window 8.0
- IDE : Netbean 8.0

4.2

Kết quả thực hiện.

- Về cơ bản, chương trình thực hiện được các chức năng là tạo kết nối, chat
qua lại giữa các thành viên online.
- Với phạm vi nhỏ của đề tài, chưa có thực hiện một số chức năng mà có
thể triển khai được như truyền file, gửi tin nhắn có định dạng... giống như
các ứng dụng chat thực sự đang có.
- Các thao tác trên giao diện cũng chưa thực sự tiện lợi. Việc thử nghiệm
chỉ mới dừng lại trên máy ở mạng lan (Giữa máy thật và máy ảo) và trên
máy cục bộ (Sử dụng địa chỉ localhost).
Một số hình ảnh minh họa

Giao diện Máy Chủ


14


Giao diện đăng nhập đăng kí của Client

Giao diện chat của Client

15


Giao diện Gửi File của Client

16


4.3

Chương trình

4.3.1 Cấu trúc chương trình

4.3.2 Chương trình trên máy server
a.File MainForm.java
Thư viện :

Khai báo ban đầu

17



Tạo hiển thị thơng báo lên màn hình

Các phương thức cần có trong mainform.java

18


19


Nút “Khởi động Máy Chủ”

Nút “Dừng Máy Chủ”

20


b. File ServerThread.java
Khai báo thư viện

Khai báo ban đầu và khai báo hiển thị ra màn hình appendMessage

Phương thức run()

Phương thức stop()

21



×