Điều này cho phép các máy tính khác nhau có thể giao tiếp với nhau một cách độc lập thông qua các kênh giao tiếp được thiết lập socket.Có hai kiểu socket: AF_UNIX: chỉ cho phép giao tiế
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA ĐIỆN TỬ - VIỄN THÔNG
BỘ MÔN MÁY TÍNH – HỆ THỐNG NHÚNG
- -
BÁO CÁO ĐỒ ÁN MÔN HỌC Môn học: Lập trình mạng Đề tài: Chương trình trò chơi caro qua mạng bằng Java Giảng viên hướng dẫn: ThS Lê Đức Trị Lớp: 20Nhung Nhóm sinh viên thực hiện: Nhóm 15 Lê Hoàng Việt Quốc 20200323
Phạm Vĩnh Phú 20200308
Phan Dương Khải Nguyên 20200281
Huỳnh Trần Quốc Trung 20200379
Thành phố Hồ Chí Minh, ngày 07 tháng 03 năm 2024
Trang 2Nhận xét của giảng viên
Trang 3
BẢNG ĐÁNH GIÁ ĐÓNG GÓP CỦA THÀNH VIÊN
Trang 4LỜI MỞ ĐẦU
Đầu tiên, nhóm 15 xin cảm ơn thầy Lê Đức Trị đã phân công cho nhóm 15
đề tài này Được nhận và thực hiện vào dự án này không chỉ là một cơ hội lớn
để áp dụng kiến thức lập trình mạng của mình mà còn là một trải nghiệm học hỏi và phát triển kỹ năng quý báu
Việc xây dựng một game Caro đa người chơi trên mạng không chỉ là một nhiệm vụ kỹ thuật mà còn là một thách thức tương đối đối với kỹ năng lập trình mạng và giao tiếp giữa các thành phần của hệ thống Chúng em cam kết
sẽ đặt hết sức mình vào dự án này, học hỏi và tận dụng những kiến thức đã học được để tạo ra một sản phẩm chất lượng và thú vị
Trong báo cáo này, nhóm 15 sẽ cố gắng trình bày một cách chi tiết và rõ ràng nhất về quá trình phát triển dự án, từ việc nghiên cứu và thiết kế cho đến triển khai và kiểm thử Nhóm chúng em hy vọng rằng báo cáo này không chỉ
là một bản tường thuật về công việc của nhóm đã thực hiện mà còn là một nguồn tài liệu hữu ích cho các sinh viên khác quan tâm đến lập trình mạng và phát triển game trực tuyến
Một lần nữa xin được phép gửi lời cảm ơn chân thành nhất đến thầy Lê Đức Trị vì đã giúp đỡ và hướng dẫn để nhóm chúng em có thể hoàn thành được đề tài đã được nhận và hoàn thành tốt môn học /
Nhóm 15
Trang 5MỤC LỤC
LỜI MỞ ĐẦU 4
I TỔNG QUAN VỀ ĐỀ TÀI 6
1 Giới thiệu tổng quan về đề tài 6
2 Giới thiệu tổng quan về game Caro 6
3 Phương pháp triển khai đề tài 6
II CƠ SỞ LÝ THUYẾT 7
1 Giao thức TCP/IP 7
2 Socket 8
3 Mô hình client – server 10
4 Mô hình MVC 13
5 Đa luồng 14
III GIỚI THIỆU MÔI TRƯỜNG PHẦN MỀM 15
1 Java 15
2 Java Swing 16
3 MySQL 16
Trang 6I TỔNG QUAN VỀ ĐỀ TÀI
1 Giới thiệu tổng quan về đề tài
Yêu cầu: Lập trình chương trình trò chơi game caro qua mạng bằng Java
2 Giới thiệu tổng quan về game Caro
Game Caro, hay còn được biết đến với tên gọi Gomoku, là một trò chơi kinh điển thuộc thể loại cờ vua, nơi hai người chơi trạnh nhanh với nhau để tạo ra một chuỗi liên tiếp gồm n cờ theo hàng ngang, dọc hoặc chéo trên một bảng ô vuông
Luật chơi: Trò chơi được chơi trên một bảng ô vuông, thường là có kích thước
15x15 hoặc 19x19, với mỗi người chơi sử dụng một loại quân cờ riêng (thường là X
và O hoặc các biểu tượng khác nhau) Mục tiêu cua mỗi người chơi là đặt quân cờ của mình trên bảng để tạo ra một chuỗi gồm n quân cờ theo hàng ngang, dọc hoặc chéo mà không bị chặn bởi quân cờ của đối thủ Người chơi đầu tiên tạo ra chuỗi này sẽ chiến thắng trò chơi
Game Caro không chỉ là một trò chơi giải trí mà còn là một trò chơi đòi hỏi tính
tư duy chiến lược và kỹ năng định hình không gian Với sự phổ biến trên toàn thế giới, Caro đã trở thành một trong những trò chơi kinh điển được yêu thích và chơi rộng rãi trong cộng đồng game thủ
Trong dự án này, nhóm chúng em quyết định phát triển một phiên bản game Caro bằng Java, cho phép 2 người chơi cùng tham gia vào trò chơi và cạnh tranh với nhau thông qua kết nối Internet Với sự kết hợp giữa tính giải trí và khả năng tương tác trực tuyến, nhóm em hy vọng rằng dự án sẽ đáp ứng được yêu cầu và mang đến một trải nghiệm tốt với dự án game Caro qua mạng này
3 Phương pháp triển khai đề tài
Ngôn ngữ lập trình: Java
Môi trường phát triển: NetBeans, MySQL
Các kiến thức sử dụng: giao thức TCP/IP, Socket, JavaSwing, Multithreading
Mô hình: client-server, MVC (Model – View – Controller)
Trang 7 Tạo ra được một chương trình mà các Client có thể kết nối và tương tác với nhau thông qua một Server
II CƠ SỞ LÝ THUYẾT
1 Giao thức TCP/IP
Bộ giao thức TCP/IP (TCP/IP protocol suite) hay còn gọi là bộ giao thức Internet (Internet protocol suite hoặc IP suite) là một mô hình khái niệm và một tập hợp các giao thức truyền thông dùng trong mạng Internet và các hệ thống mạng máy tính tương tự Tên gọi TCP/IP đến từ hai giao thức nền tảng của bộ giao thức là TCP (Transmission Control Protocol) và IP (Internet Protocol)
Các lớp chính của mô hình TCP/IP:
Lớp Ứng dụng (Application Layer)
Lớp Giao vận (Transport Layer)
Lớp Mạng (Internet Layer)
Lớp Liên kết Dữ liệu (Link Layer hoặc Network Access Layer)
Hình 1: Mô hình TCP/IP
Trang 8Trong dự án, nhóm sử dụng TCP/IP, làm việc ở tầng Transport và tần Internet của
mô hình TCP/IP
Tầng Transport (TCP/UDP):
TCP cung cấp kết nối tin cậy, đảm bảo dữ liệu được truyền qua mạng một cách an toàn và có thứ tự Điều này thích hợp cho các ứng dụng như trò chơi trực tuyến, nơi độ tin cậy và đồng bộ hóa dữ liệu là quan trọng
Nếu sử dụng UDP (User Datagram Protocol) thay vì TCP, cũng đang làm việc ở tầng Transport UDP là giao thức không đảm bảo việc truyền dữ liệu một cách tin cậy và không có cơ chế kiểm soát lỗi hoặc đảm bảo thứ tự gói tin, nhưng nó
có thể nhanh hơn và phù hợp cho các ứng dụng cần thời gian thực hoặc không yêu cầu độ tin cậy cao như streaming media
Tầng Internet (IP):
Tầng Internet của TCP/IP chịu trách nhiệm định tuyến gói tin trên mạng Trong dự án, khi sử dụng TCP hoặc UDP để truyền dữ liệu, gói tin sẽ được đóng gói vào các gói tin IP và chuyển tiếp qua mạng tới đích Giao thức IP đảm bảo gói tin đến đúng đích bằng cách sử dụng địa chỉ IP của các thiết bị mạng và các bảng định tuyến
2 Socket
Socket là một giao diện lập trình ứng dụng (API – Application Programming Interface) được giới thiệu đầu tiên trong ấn bản Unix – BSD 4.2 dưới dạng các hàm
hệ thống trong ngôn ngữ C Ngày nay, socket được hỗ trợ hầu hết trên các hệ điều hành: Windows, Linux và trong nhiều ngôn ngữ lập trình như C, C++, Java, Dot.net,…
Socket cho phép thiết lập các kênh giao tiếp giữa các máy tính trên mạng, trong
đó mỗi đầu kênh được đánh dấu bởi một cặp địa chỉ IP và số cổng (port)
Trang 9Hình 2: Socket
Khi thiết lập kết nối bằng socket, mỗi bên của kết nối được gán với một cặp địa chỉ IP và số cổng Điều này cho phép các máy tính khác nhau có thể giao tiếp với nhau một cách độc lập thông qua các kênh giao tiếp được thiết lập socket
Có hai kiểu socket:
AF_UNIX: chỉ cho phép giao tiếp giữa các quá trình trong cùng một máy tính
AF_INET: cho phép giao tiếp giữa các quá trình trên những máy tính khác nhau
Trong dự án này, nhóm thực hiện dùng kiểu socket AF_UNIX để tương tác giữa hai user khác nhau
Để thực hiện các cuộc giao tiếp, quá trình cần có cổng của socket mà mình sử dụng Mỗi cổng giao tiếp thể hiện một địa chỉ xác định trong hệ thống
Trang 10Hình 3: Ports
Số hiệu cổng gán cho socket phải duy nhất trên máy tính, có giá trị trong khoảng 0 – 65535 (16bit), các cổng từ 1 – 1023 được dành riêng cho các quá trình của hệ thống
Socket thường được sử dụng trong hai loại kết nối chính:
Socket TCP
Soket UDP
Socket TCP:
Sử dụng trong các ứng dụng yêu cầu kết nối tin cậy, đảm bảo việc truyền dữ liệu
an toàn và có thứ tự Khi sử dụng socket TCP, một kết nối đường truyền được thiết lập giữa client và server, và dữ liệu được truyền đi qua kết nối này theo trình tự được đảm bảo
Socket UDP:
Sử dụng trong các ứng dụng yêu cầu truyền dữ liệu một cách nhanh chóng và không cần đảm bảo việc truyền dữ liệu tin cậy Khi sự dụng socket UDP, dữ liệu được gửi dưới dạng các gói tin độc lập mà không cần thiết lập kết nối đường truyền Trong dự án, nhóm sử dụng giao thức có kết nối sử dụng giao thức TCP vì các lý
do sau:
Trang 11 Đảm bảo truyền dữ liệu an toàn và có thứ tự.
Kết nối tin cậy giữa client và server
Quản lý kết nối đa chiều
3 Mô hình client – server
Mô hình client – server là một mô hình phân tán trong đó các ứng dụng được chia thành hai phần chính: client (người dùng) và server (máy chủ) Trong mô hình này, client và server tương tác với nhau thông mạng
Hình 4: Mô hình client - server
Trong mô hình client – server, server đóng vai trò như là một trung tâm điều khiên, cung cấp các dịch vụ và tài nguyên cho các client Các client được cấp quyền truy cập vào các tài nguyên và dịch vụ của server thông qua các giao thức và phương thức truy cập HTPP, FTP, SSH, Telnet, và nhiều hơn nữa
Các ứng dụng client – server rất phổ biến trong các môi trường mạng và Internet, bao gồm các ứng dụng web, email, trò chơi trực tuyến, hệ thống quản lý cơ sở dữ liệu và nhiều hơn nữa Mô hình client – server cho phép các ứng dụng phân tán trên nhiều máy trính và cho phép các người dùng truy cập và chia sẽ dữ liệu và tài nguyên một cách dễ dàng
Mô hình client – server sử dụng TCP là một kiểu thiết kế mạng phổ biến trong đó client và server tương tác với nhau thông qua giao thức TCP (Transmission Control Protocol) Cách mô hình hoạt động:
Trang 12 Thiết lập kết nối:
Client khởi tạo một yêu cầu kết nối tới server bằng cách gửi một yêu cầu kết nối đến địa chỉ IP và cổng của server
Server lắng nghe yêu cầu kết nối từ client trên cổng được chỉ định và chấp nhận kết nối từ client khi có yêu cầu
Hình 5: Giai đoạn 1 của hoạt động client - server sử dụng TCP
Gửi nhận và dữ liệu:
Sau khi kết nối được thiết lập, client và server có thể gửi và nhận dữ liệu từ nhau
Dữ liệu được chia thành các gói tin và truyền đi qua kết nối TCP, đảm bảo tính toàn vẹn và đúng thứu tự của dữ liệu
Hình 6: Giai đoạn 2 của mô hình hoạt động client - server sử dụng TCP
Xử lý yêu cầu:
Server nhận dữ liệu từ client và thực hiện xử lý yêu cầu tương ứng
Sau khi xử lý, server có thể gửi lại kết quả cho client, hoặc tiếp tục duy trì kết nối thực hiện các tương tác tiếp theo
Trang 13Hình 7: Giai đoạn 3 của mô hình hoạt động client - server sử dụng TCP
Kết thúc kết nối:
Khi quá trình trao đổi dữ liệu hoàn tất, client hoặc server có thể đóng kết nối bằng cách gưi một tín hiệu kết thúc kết nối
Server lắng nghe và chấp nhận các yêu cầu đóng kết nối từ client, và sau đó đóng kết nối
Hình 8: Giai đoạn 4 của mô hình client - servet sử dụng TCP
Mô hình client – server sử dụng TCP được sử dụng trong dự án vì đáp ứng được tính tin cậy và đảm bảo tính toán vẹn của dữ liệu Điều này là do TCP cung cấp một kết nối tin cậy giữa client và server, đảm bảo rằng dữ liệu được truyền đi một cách
an toàn và có thứ tự
4 Mô hình MVC
MVC là viết tắt của cụm từ “Model – View – Controller” Đây là mô hình thiết
kế được sử dụng trong kỹ thuật phần mềm MVC là một mẫu kiến trúc phần mềm
để tạo lập giao diện người dùng trên máy tính MVC chia thành ba phần được kết nối với nhau và mỗi thành phần đều có một nhiệm vụ riêng của nó và độc lập với các thành phần khác Tên gọi 3 thành phần:
Model (dữ liệu): quản lí xử lí các dữ liệu
Trang 14 View (giao diện): nơi hiển thị dữ liệu cho người dùng.
Controller (bộ điều khiển): điều khiển sự tương tác của hai thành phần Model
và View
Mô hình MVC được dùng trong dự án để phát triển giao diện người dùng
Hình 9: Mô hình MVC
4
Các thành phần chính của mô hình:
Model: là bộ phận có chức năng lưu trữ toàn bộ dữ liệu của ứng dụng và là cầu nối giữa 2 thành phần khác là View và Controller Một model là dữ liệu được sử dụng bởi chương trình Đây có thể là cơ sở dữ liệu, hoặc file XML bình thường hay một đối tượng đơn giản
View: đây là phần giao diện dành cho người sử dụng View là phương tiện
hiển thị các đối tượng trong một ứng dụng Chẳng hạn như hiện thị một cửa sổ, nút hay văn bản trong một cửa số khác Nó bao gồm bất cứ thứ gì mà người dùng có thể nhìn thấy được
Controller: là bộ phận có nhiệm vụ xử lý các yêu cầu người dùng đưa đến
thông qua View Một controller bao gồm cả Model lẫn View Nó nhận input và thực hiện các update tương ứng
Luồng xử lý trong MVC:
Trang 15 Khi một yêu cầu của từ client gưi server Thì bị Controller trong MVC chặn lại để xem đó là URL request hay event
Sau đó, Controller xử lý input của user rồi giap tiếp với Model trong MVC
Model chuẩn bị data và gửi lại cho Controller
Cuối cùng, khi xử lý xong yêu cầu thì Controller gửi dữ liệu trở lại View và hiện thị cho người dùng trên trình duyệt
5 Đa luồng
Hình 10: Đa luồng
Đa luồng (multithreading) là một kỹ thuật cho phép một chương trình chia thành nhiều luồng thực thi đồng thời Mỗi luồng thực hiện một tác vụ riêng biệt, cho phép chương trình thực hiện nhiều công việc cùng lúc và tăng hiệu suất tổng thể của ứng dụng Dưới đây là số điểm quan trọng về đa luồng:
Tăng hiệu suất: Đa luồng cho phép các tác vụ được thực hiện đồng thời,
giúp tăng hiệu suất của chương trình bằng cách sử dụng tài nguyên hệ thống hiệu quả hơn
Phản hồi tương tác: Đa luồng cho phép ứng dụng vẫn có thể phản hồi tương
tác với người dùng trong khi thực hiện các tác vụ phức tạp khác mà không gây tình trạng đóng băng hoặc chậm trễ
Tận dụng CPU đa lõi: Trên các máy tính có nhiều lõi CPU, việc sử dụng đa
luồng cho phép chương trình tận dụng tối đa khả năng xử lý song song của các lõi
Xử lý các tác vụ đồng thời: Đa luồng thường được sử dụng để xử lý các tác
vụ đồng thời như gửi và nhận dữ liệu qua mạng, xử lý dữ liệu đồng thời từ nhiều nguồn, hoặc tương tác với người dùng trong khi thực hiện các tác vụ nền
Trang 16 Quản lý tài nguyên chia sẻ: Khi sử dụng đa luồng, cần phải chú ý đến việc
quản lý tài nguyên chia sẻ như biến toàn cục hoặc bộ nhớ, để tránh các vấn đề như xung đột và đồng bộ hóa dữ liệu
Trong dự án của nhóm, việc sử dụng đa luồng có thể hữu ích để xử lý các tác vụ đồng thời như xử lý yêu cầu từ nhiều người chơi cùng một lúc, cập nhật trạng thái của trò chơi và hiển thị giao diện người dùng một cách mượt mà và phản hồi
III GIỚI THIỆU MÔI TRƯỜNG PHẦN MỀM
1 Java
Java là một ngôn ngữ lập trình phổ biến, mạnh mẽ và đa năng Ra mắt lần đầu vào năm 1995, cho đến bây giờ Java được sử dụng rộng rãi trong nhiều loại ứng dụng khác nhau Các đặc điểm quan trọng của Java:
Đa nền tảng: Java được thiết kể để có thể chạy trên nhiều nền tảng khác nhau
mà không cần đổi mã nguồn, nhờ vào máy ảo Java
Hướng đối tượng: Java hỗ trợ lập trình hướng đối tượng, giúp dễ quản lý mã nguồn, tái sử dụng mã và phát triển ứng dụng phức tạp
An toàn và bảo mật: Java có các tính năng bảo mật tích hợp để ngăn chặn các
lỗ hổng bảo mật và chống lại các cuộc tấn công
Phong phú với thư viện: Java đi kèm với một bộ thư viện phong phú, cung cấp các công cụ và API để phát triển nhanh chóng và dễ dàng các ứng dụng phức tạp
Java không chỉ là một ngôn ngữ lập trình, mà còn là một nền tảng phát triển toàn diện, cung cấp một loạt các công cụ và tài nguyên để phát triển ứng dụng từ nhỏ đến lớn Trong hệ sinh thái Java, Java Development Kit (JDK) là trung tâm, cung cấp môi trường phát triển và thực thi đầy đủ cho các ứng dụng Java
2 Java Swing
Java Swing là một phần của Java Development Kit (JDK), cung cấp bộ công cụ GUI mạnh mẽ để phát triển giao diện người dùng đồ họa cho các ứng dụng Java Với Swing, ta có thể tạo ra các ứng dụng desktop phong phú và linh hoạt, với các thành phần giao diện người dùng như nút, ô văn bản, hộp thoại, bảng và nhiều hơn nữa phù hợp cho nhu cầu cụ thể của dự án là tạo ra một trò chơi game Caro