You are on page 1of 28

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TPHCM


*****

ĐỒ ÁN LẬP TRÌNH MẠNG

ĐỀ TÀI

CHAT APPLICATION & SEND FILE

Ngành : CÔNG NGHỆ THÔNG TIN

Chuyên ngành : MẠNG MÁY TÍNH

Giảng viên hướng dẫn: THẦY VĂN THIÊN HOÀNG

Sinh viên thực hiện :

Họ và tên MSSV Lớp

Nguyễn Đăng Quang 1311061016 13DTHM02

Đặng Thành Phát 1311060941 13DTHM02

Dương Hiển Vinh 1311061372 13DTHM02

TP.HCM - Tháng 1, năm 2017


Chat Application & Send File 1

Mục lục
CHƯƠNG 1. MỞ ĐẦU ...................................................................................................2
Phần 1. Bối cảnh, lý do thực hiện đề tài .................................................................2
Phần 2 : Cơ sở lập trình ...........................................................................................2
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT ..................................................................................4
Phần 1 : Yêu cầu của đề tài......................................................................................4
Phần 2 : Giới thiệu mô hình Client/Server ............................................................4
Phần 3 : Giới thiệu giao thức IP/TCP .....................................................................5
Phần 4 : Lập trình mạng trong Java. .......................................................................6
CHƯƠNG 3 : PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH .............................................8
Phần 1 : Phân tích yêu cầu ......................................................................................8
Phần 2 : Phân tích chức năng. .................................................................................8
Phần 3 : Phân tích thiết kế chương trình. .............................................................. 9
CHƯƠNG 4 : TRIỂN KHAI THỰC HIỆN VÀ KẾT QUẢ ..............................................10
Phần 1 : Môi trường triển khai .............................................................................10
Phần 2 : Kết quả thực hiện. ...................................................................................10
Phần 3 : Chương trình ...........................................................................................13
Chat Application & Send File 2

CHƯƠNG 1. MỞ ĐẦU

Phần 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 toà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 “Chat Application & Send
File”, đ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.

Phần 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.
Chat Application & Send File 3

- Lập trình mạng. Lớp quan trọng nhất mà ta sử dụng là lớp Socket và
ServerSocket.
Chat Application & Send File 4

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

Phần 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.

Phần 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
Chat Application & Send File 5

Phần 3 : Giới thiệu giao thức IP/TCP


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. 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.

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
Chat Application & Send File 6

khác không 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.

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.
Phần 4 : Lập trình mạng trong Java.

1. Gió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.
Chat Application & Send File 7

 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. 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

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
Chat Application & Send File 8

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

Phần 1 : Phân tích yêu cầu


Viết chương trình cho phép chat room giữa nhiều người qua mạng.

Phần 2 : Phân tích chức năng.

1. Trên Client:
 Đăng nhập vào server với một cái nickname do người dùng tự
chọn

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

 Gửi tin nhắn tới một người, nhiều 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ừ nickname khác gửi tới.

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

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

 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 nickname online cho nickname có yêu cầu.

 Nhận tin nhắn từ một nickname và chuyển tiếp tới các


nickname khác tương ứng theo yêu cầu của nickname gửi.
Chat Application & Send File 9

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

 Xác nhận gửi file của đến nickname đượ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.

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


Server Client

Main Form Login Form

ServerThread
Main Form

SocketThread
ClientThread
Chat Application & Send File 10

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

Phần 1 : Môi trường triển khai


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

Phần 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ủ


Chat Application & Send File 11

Giao diện khi nhất nút “Khởi động Máy Chủ”

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


Chat Application & Send File 12

Giao diện chat của Client

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


Chat Application & Send File 13

Phần 3 : Chương trình


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

2. Chương trình trên máy server


a.File MainForm.java
Thư viện :

Khai báo ban đầu


Chat Application & Send File 14

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


Chat Application & Send File 15
Chat Application & Send File 16

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

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


Chat Application & Send File 17

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()


Chat Application & Send File 18

c. File SocketThread.java

Khai báo thư viện

Khai báo ban đầu, thiết lập luồng truyền dữ liệu Socket :
DataInputStream
Chat Application & Send File 19

Thiết lập kết nối

d. File OnlineListThread.java

Khai báo thư viện

Khai báo thiết lập ban đầu

Khai báo void run()


Chat Application & Send File 20
Chat Application & Send File 21

3. Chương trình trên máy Client


a. LoginForm.java

Hàm kết nối đến Server khi người dùng click vào nút “Đăng nhập”

b. MainForm.java

Khai báo thư viện

Khai báo ban đầu


Chat Application & Send File 22

Thiết lập kết nối đến Server

Hàm hiện danh sách online


Chat Application & Send File 23

c. File ClientThread.java

Khai báo thư viện

Khai báo ban đầu, khởi tạo ClientThread và thiết lập DataInputStream
Chat Application & Send File 24

d. File SendFile.java

Khai báo ban đầu

Phương thức này được gọi đến khi người dùng click vào menu “Gửi File”, sau đó
kết nối đến Server và bắt đầu sẵn sàng để gửi file
Chat Application & Send File 25

Phương thức SendFileThread này sẽ gửi yêu cầu chuyển dữ liệu đến Server

Code của nút gửi file khi người dùng nhấn

e. File SendingFileThread.java

Thiết lập ban đầu


Chat Application & Send File 26

Các tiến trình xử lý


Chat Application & Send File 27

You might also like