1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỒ án lập TRÌNH MẠNG ỨNG DỤNG CHAT và gửi FILE

29 507 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồ Án Lập Trình Mạng Ứng Dụng Chat Và Gửi File
Tác giả Nguyễn Trung Thành, Nguyễn Văn Quang, Đào Nhật Tín, Nguyễn Đình Hùng
Người hướng dẫn Nguyễn Lê Văn
Trường học Trường Đại Học Công Nghệ TP. HCM
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ án lập trình mạng
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 29
Dung lượng 1,91 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ậptrình mạng ra đời.. Ứng dụng

Trang 1

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

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

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

ỨNG DỤNG CHAT VÀ GỬI FILE

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

Chuyên ngành: CÔNG NGHỆ PHẦN MỀM

Giảng viên hướng dẫn : NGUYỄN LÊ VĂN

Sinh viên thực hiện:

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU 3

lỜI CẢM ƠN 4

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 5

1.1 Yêu cầu đề tài: 5

1.2 Giới thiệu mô hình Client/Server: 5

1.3 Giới thiệu giao thức IP/TCP: 6

1.3.1 Giới thiệu về TCP 6

1.3.2 Giới thiệu về IP 6

1.3.3 Giới thiệu về cổng Port 6

1.3.4 Giới thiệu về Socket 7

1.4 Lập trình mạng trong Java: 7

1.4.1 Gói ServerSocket 7

1.4.2 Gói Socket 8

1.4.3 Một số gói , lớp bổ trợ khác 8

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

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

2.2 Phân tích chức năng : 9

2.2.1 Trên Client 9

2.2.2 Trên Server 9

2.3 Phân tích thiết kế chương trình: 10

CHƯƠNG 3: TRIỂN KHAI VÀ KẾT QUẢ 11

3.1 Môi trường triển khai: 11

3.2 Kết quả: 11

3.3 Chương trình: 14

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

3.3.2 Chương trình trên máy Server 14

3.3.3 Chương trình trên máy Client 21

CHƯƠNG 4: PHÂN CÔNG , ĐÁNH GIÁ 28

2

Trang 3

LỜI MỞ ĐẦU

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 nhucầ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ảnchấ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ớilạ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ềutiệ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ậptrình mạng ra đời Vì vậy, ngày hôm nay, lúc nhóm chúng em đang học về lập trìnhmạng, đã tìm được đề tài với tên “ỨNG DỤNG CHAT VÀ GỬI FILE”, điều đó giúpnhóm chúng 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ộtlĩnh vực lập trình rất thú vị này

Ứng dụng hoạt động dựa vào giao thức IP/TCP để truyền dữ liệu giữa hai máykhá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 JAVA SE 8) 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 taquan 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 Javacung 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ìnhsong 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ềuhành khác nhau nên có phạm vi ứng dụng rất rộng rãi

Trang 4

LỜI CẢM ƠN

Để hoàn thành tốt đồ án lần này chúng em xin chân thành cảm ơn thầy Nguyễn

Lê Văn đã hướng dẫn chúng em trong suốt quá trình môn học và quá trình làm đồ

án lần này

Bên cạnh đó để hoàn thành đồ án lần này chúng em cũng đã nhận được rấtnhiều sự hỗ trợ của bạn bè cũng như quý thầy cô Nhưng do điều kiện thời gian,chúng em khó có thể bỏ qua những sự thiếu sót Chúng em rất mong nhận được sựthông cảm của quý thầy cô cũng như những sự góp ý, chỉ bảo của quý thầy cô đểsản phẩm trở nên tốt hơn Chúng em xin chân thành cảm ơn!

4

Trang 5

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

1.1 Yêu cầu đề tài:

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

1.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ạngcho 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)

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ôngviệ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ý và phản hồi lại client

Trang 6

1.3.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 đượcmáy nào trên mạng và ngược lại

1.3.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 quamá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 ứngdụ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 Bphả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à ứngdụ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ụngnhư http: 80, mail : 25, ftp : 21, Telnet 23 Các giá trị còn lại có thể được sử dụnglinh hoạt

6

Trang 7

- 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 thể sử dụngcổng 55 đó nữa chừng nào ứng dụng trước đó chưa có đóng cổng 55 lại.

1.3.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 khikết hợp hai khái niệm IP và Port lại

- Socket có những nhiệm vụ như sau :

1.4 Lập trình mạng trong Java:

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

 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 khi không sử dụng

Trang 8

close() : Đóng kết nối khi không cần

1.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 ra vào

Public OutputStream getOutputStream() ; Public InputStream getInputStream() ;

 Đóng kết nối

Public void Close(); Đóng kết nối

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

8

Trang 9

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

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

2.2 Phân tích chức năng :

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

- 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

Trang 10

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

Trang 11

CHƯƠNG 3: TRIỂN KHAI VÀ KẾT QUẢ

3.1 Môi trường triển khai:

- 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ớidừ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ủ

Trang 12

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

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

12

Trang 13

Giao diện chat của Client

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

Trang 15

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:

Trang 16

16

Trang 17

Nút “khởi động máy chủ” :

Nút “Dừng máy chủ” :

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

Trang 19

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

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

Trang 20

d File OnlineListThread.java

Khai báo thư viện:

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

Khai báo void run() :

20

Trang 21

3.3.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” :

Trang 22

b MainForm.java

Khai báo thư viện :

Khai báo ban đầu :

22

Trang 23

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

Hàm hiện danh sách online :

Trang 24

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 :

24

Trang 25

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 :

Trang 26

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 :

26

Trang 27

e File SendingFileThread.java

Thiết lập ban đầu :

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

Trang 28

CHƯƠNG 4: PHÂN CÔNG , ĐÁNH GIÁ

STT MSSV/ Họ và tên Nội dung công việc thực hiện Tự đánh giá điểm

Đào Nhật Tín

Tham gia làm báo cáo, powerpoint,làm giao diện form máy chủ Làm chức năng ReceivingFileThread, MainForm của Client,

SocketThread

25%

28

Ngày đăng: 21/12/2022, 08:34

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w