1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án môn học lập trình mạng xây dựng trò chơi cờ vua qua mạng lan

24 5 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 môn học lập trình mạng xây dựng trò chơi cờ vua qua mạng LAN
Tác giả Nguyễn Sĩ Thiện, Lê Xuân Hướng
Người hướng dẫn Th.S Nguyễn Thanh Cẩm
Trường học Trường Đại Học Công Nghệ Thông Tin & Truyền Thông Việt Hàn
Chuyên ngành Lập trình mạng
Thể loại Đồ án môn học
Năm xuất bản 2021
Thành phố Đà Nẵng
Định dạng
Số trang 24
Dung lượng 3,04 MB

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

Nội dung

Cho nên, để thực hiện việc kết nối mạng bạn cần phải sở dữ liệu… cho đến kiến thức truyền thông, các kiến thức các lĩnh vực liênquan khác như mạng điện thoại di động, PSTN, hệ thống GPS,

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &

TRUYỀN THÔNG VIỆT HÀN

KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN MÔN HỌC LẬP TRÌNH MẠNG XÂY DỰNG TRÒ CHƠI CỜ VUA QUA MẠNG

LAN

Sinh viên thực hiện: NGUYỄN SĨ THIỆN

LÊ XUÂN HƯỚNG

Giảng viên hướng dẫn: Th.S NGUYỄN THANH CẨM

Trang 2

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG VÀ TRUYỀN

THÔNG VIỆT HÀN

ĐỒ ÁN MÔN HỌC LẬP TRÌNH MẠNG

XÂY DỰNG TRÒ CHƠI CỜ VUA QUA

MẠNG LAN

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

Trang 3

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

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Trang 4

LỜI CẢM ƠN

Chúng em xin gửi lời cảm ơn chân thành và sâu sắc đến các thầy cô đặcbiệt là giảng viên Th.S Nguyễn Thanh Cẩm trong thời gian qua đã giúp đỡchúng em trong việc hoàn thành bài báo cáo đồ án môn học Lập trình mạng.Mặc dù gặp nhiều khó khăn trong việc hoàn thành bài đồ án này, tuynhiên chúng em vẫn cố gắng để thực hiện hoàn chỉnh nhất bài báo cáo Tuynhiên, vì chưa có đầy đủ kỹ năng cũng như kinh nghiệm để hoàn thành bài báocáo đồ án nên chúng em vẫn còn nhiều thiếu sót Rất mong được sự đóng góp ýkiến của thầy cô để bài báo cáo đồ án được hoàn thiện hơn, em xin chân thànhcảm ơn

Em xin trân trọng cảm ơn !

Trang 5

MỤC LỤC

DANH MỤC HÌNH VẼ i

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

1.1 Tổng quan về lập trình mạng 1

1.2 Tổng quan về TCP/IP 2

1.2.1 Bộ giao thức liên mạng (IP Protocol) 2

1.2.2 Bộ giao thức điều khiển giao vận (TCP Protocol) 4

1.3 Lập trình socket 5

1.3.1 Giới thiệu về socket 5

1.3.2 Số hiệu cổng của socket 6

1.3.3 Các chế độ giao tiếp 7

CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG… 8

2.1 Phân tích yêu cầu bài toán 8

2.2 Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ 8

2.2.1 Xây dựng chương trình 10

2.2.2 Sơ đồ hoạt động 11

2.2.3 Môi trường phát triển 11

CHƯƠNG 3 TRIỂN KHAI XÂY DỰNG … 13

3.1 Kết quả demo chương trình 13

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 16

1 Kết luận 16

2 Hướng phát triển 16

Trang 6

DANH MỤC HÌNH VẼ

Hình 1.1 – Mô hình lập trình mạng

Hình 1.2 – Cấu trúc gói tin IP

Hình 1.3 – Mô hình client - server

Hình1.4 – Số hiệu cổng

Hình 1.5 – Kiến trúc hệ thống TCP/IP

Hình 2.1 – Tiến trình gữi và nhận message

Hình 2.2 – Sơ đồ hoạt động trò chơi cờ vua

Trang 7

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

1.1 Tổng quan về lập trình mạng

Mạng máy tính được phát triển nhằm mục đích nghiên cứu và phân tích quátrình giao tiếp Nó hỗ trợ giao tiếp các hệ thống máy tính với nhau để trao đổithông tin và tài nguyên Cho nên, để thực hiện việc kết nối mạng bạn cần phải

sở dữ liệu… cho đến kiến thức truyền thông, các kiến thức các lĩnh vực liênquan khác như mạng điện thoại di động, PSTN, hệ thống GPS, các mạng nhưBlueTooth, WUSB, mạng sensor… đều là các chương trình ứng dụng mạng

Trang 8

Hình 1.1 – Mô hình lập trình mạng

1.2 Tổng quan về TCP/IP

1.2.1 Bộ giao thức liên mạng (IP Protocol)

- Giao thức liên mạng, thường gọi là giao thức IP (Internet Protocol) là một giaothức mạng hoạt động ở tầng 3 của mô hình OSI, nó qui định cách thức định địachỉ các máy tính và cách thức chuyển tải các gói tin qua một liên mạng IP đượcđặc tả trong bảng báo cáo kỹ thuật có tên RFC (Request For Comments) mã số

791 và là giao thức chủ yếu trong Bộ giao thức liên mạng Cùng với giao thứcTCP, IP trở thành trái tim của bộ giao thức Internet

Trang 9

Hình 1.2 – Cấu trúc gói tin IP

 Version (Phiên bản): Xác định phiên bản của giao thức đang được sử dụng

 IP Header Length (Chiều dài của phần tiêu đề : Xác định chiều dài của phần

tiêu đề của gói tin, tính bằng đơn vị là từ - 32 bits (32-bit word)

 Type-of-Service (Kiểu của dịch vụ) : Đặc tả mức độ quan trọng mà giao thức

phía trên muốn xử lý gói tin

 Total Length (Tổng chiều dài gói tin): Đặc tả chiều dài, tính bằng byte, của cả

gói tin IP, bao gồm cả phần dữ liệu và tiêu đề

 Identification ( Số nhận dạng ): Số nguyên nhận dạng gói tin dữ liệu hiện

hành Trường này được sử dụng để ráp lại các phân đoạn của gói tin

 Flags (Cờ hiệu): Gồm 3 bít, bit có trọng số nhỏ để xác định gói tin có bị phânđọan hay không Bit thứ 2 xác định có phải đây là phân đoạn cuối cùng của góitin hay không Bit có trọng số lớn nhất chưa sử dụng

 Fragment Offset (Vị trí của phân đọan): Biểu thị vị trí của phân đoạn dữ liệu

so với vị trí bắt đầu của gói dữ liệu gốc, nó cho phép máy nhận xây dựng lạigói tin ban đầu

 Time-to-Live (Thời gian sống của gói tin): Lưu giữ bộ đếm thời gian, giá trị sẽ

được giảm dần đến khi nó có giá trị là 0 thì gói tin sẽ bị xóa Điều này giúpngăn ngừa tình trạng gói tin được truyền đi lòng vòng không bao giờ đến đượcđích

 Protocol(Giao thức): Biểu hiện giao thức ở tầng trên sẽ nhận gói tin khi nó đã

được giao thức IP xử lý

Trang 10

 Header Checksum (Tổng kiểm tra lỗi tiêu đề): kiểm tra tính toàn vẹn của

phần tiêu đề

 Source Addres : Địa của máy gởi gói tin.

 Destination Address: Địa chỉ của máy nhận gói tin.

 Options: Tùy chọn cho phép để hỗ trợ một số vấn đề, chẳng hạn vấn đề bảo

mật

 Data: Chứa dữ liệu của tầng trên gởi xuống cần truyền đi.

1.2.2 Bộ giao thức điều khiển giao vận (TCP Protocol)

- Giao thức TCP (Transmission Control Protocol - "Giao thức điều khiển truyềnvận") là một trong các giao thức cốt lõi của bộ giao thức TCP/IP Sử dụng TCP,các ứng dụng trên các máy chủ được nối mạng có thể tạo các "kết nối" với nhau,

mà qua đó chúng có thể trao đổi dữ liệu hoặc các gói tin Giao thức này đảm bảochuyển giao dữ liệu tới nơi nhận một cách đáng tin cậy và đúng thứ tự TCP cònphân biệt giữa dữ liệu của nhiều ứng dụng (chẳng hạn, dịch vụ Web và dịch vụ thưđiện tử) đồng thời chạy trên cùng một máy chủ

- TCP hỗ trợ nhiều giao thức ứng dụng phổ biến nhất trên Internet và các ứng dụngkết quả, trong đó có WWW, thư điện tử và Secure Shell

- Trong bộ giao thức TCP/IP, TCP là tầng trung gian giữa giao thức IP bên dưới vàmột ứng dụng bên trên Các ứng dụng thường cần các kết nối đáng tin cậy kiểuđường ống để liên lạc với nhau, trong khi đó, giao thức IP không cung cấp nhữngdòng kiểu đó, mà chỉ cung cấp dịch vụ chuyển gói tin không đáng tin cậy TCPlàm nhiệm vụ của tầng giao vận trong mô hình OSI đơn giản của các mạng máytính

- Các ứng dụng gửi các dòng gồm các byte 8-bit tới TCP để chuyển qua mạng TCPphân chia dòng byte này thành các đoạn (segment) có kích thước thích hợp(thường được quyết định dựa theo kích thước của đơn vị truyền dẫn tối đa (MTU)của tầng liên kết dữ liệu của mạng mà máy tính đang nằm trong đó) Sau đó, TCPchuyển các gói tin thu được tới giao thức IP để gửi nó qua một liên mạng tới môđun TCP tại máy tính đích TCP kiểm tra để đảm bảo không có gói tin nào bị thất

4

Trang 11

lạc bằng cách gán cho mỗi gói tin một "số thứ tự" (sequence number) Số thứ tựnày còn được sử dụng để đảm bảo dữ liệu được trao cho ứng dụng đích theo đúngthứ tự Mô đun TCP tại đầu kia gửi lại "tin báo nhận" (acknowledgement) cho cácgói tin đã nhận được thành công; một "đồng hồ" (timer) tại nơi gửi sẽ báo time-out nếu không nhận được tin báo nhận trong khoảng thời gian bằng một round-triptime (RTT), và dữ liệu (được coi là bị thất lạc) sẽ được gửi lại TCP sử dụngchecksum (giá trị kiểm tra) để xem có byte nào bị hỏng trong quá trình truyền haykhông; giá trị này được tính toán cho mỗi khối dữ liệu tại nơi gửi trước khi nóđược gửi, và được kiểm tra tại nơi nhận.

1.3 Lập trình socket

1.3.1 Giới thiệu về socket

- Socket là một giao diện lập trình ứng dụng (API-Application ProgrammingInterface) Socket cho phép thiết lập các kênh giao tiếp mà hai đầu kênh đượcđánh dấu bởi hai cổng (port) Thông qua các cổng này một quá trình có thể nhận

và gởi dữ liệu với các quá trình khác

Trang 12

Hình 1.3 – Mô hình client - server

1.3.2 Số hiệu cổng của socket.

- Để có thể thực hiện các cuộc giao tiếp, một trong hai quá trình phải công bố sốhiệu 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 Khi quá trình được gán một số hiệu cổng, nó có thể nhận

dữ liệu gởi đến cổng này từ các quá trình khác Quá trình còn lại cũng được yêucầu tạo ra một socket

- Ngoài số hiệu cổng, hai bên giao tiếp còn phải biết địa chỉ IP của nhau Địa chỉ IPgiúp phân biệt máy tính này với máy tính kia trên mạng TCP/IP Trong khi số hiệucổng dùng để phân biệt các quá trình khác nhau trên cùng một máy tính

6

Trang 14

Hình 1.5 – Kiến trúc hệ thống TCP/IP

- Tầng vận chuyển giúp chuyển tiếp các thông điệp giữa các chương trình ứng dụngvới nhau Nó có thể hoạt động theo hai chế độ:

- Giao tiếp có nối kết, nếu sử dụng giao thức TCP

- Hoặc giao tiếp không nối kết, nếu sử dụng giao thức UDP

- Socket là giao diện giữa chương trình ứng dụng với tầng vận chuyển Nó chophép ta chọn giao thức sử dụng ở tầng vận chuyển là TCP hay UDP cho chươngtrình ứng dụng của mình

8

Trang 15

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

2.1 Yêu cầu bài toán

- Yêu cầu bài toán đặt ra là xây dựng một mô hình client – server giao tiếp với nhauthông qua Socket API để xử lý trò chơi cờ vua

- Server được khởi đông sẽ lắng nghe các kết nối từ client Khi có một kết nối từclient, server khởi tạo một kênh giao tiếp và lưu trữ kênh giao tiếp đó lại

- Khi có từ 2 client trở lên, server khởi tạo một game đấu giữa 2 client Server tiếptục lắng nghe các kết nối từ client trong khi các game đấu diễn ra

- Mỗi game đấu sẽ là một luồng xử lý riêng nhận thông tin giữa hai client trong lúcgame đấu diễn ra

- Các client sẽ thực hiện các nước đi và có thể trò chuyện qua lại thông qua kênhkết nối qua chức năng chat

- Kết thúc một game đấu, server có trách nhiệm thông báo kết quả người chơi.Client có thể yêu cầu một kết nối mới để chơi tiếp một game khác

2.2 Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ.

- Quá trình trao đổi dữ liệu bao gồm:

1 Truyền một yêu cầu từ tiến trình client tới tiến trình server

2 Yêu cầu được server xử lý

3 Truyền đáp ứng cho client Mô hình truyền tin này liên quan đến việc truyềnhai thông điệp và một dạng đồng bộ hóa cụ thể giữa client và server

- Tiến trình server phải nhận thức được thông điệp được yêu cầu ở bước mộtngay khi nó đến và hành động phát ra yêu cầu trong client phải được tạm dừng(bị phong tỏa) và buộc tiến trình client ở trạng thái chờ cho tớ khi nó nhận đượcđáp ứng do server gửi về ở bước ba

- Mô hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi(send) và nhận (receive)

Trang 16

- Quá trình giao tiếp client và server có thể diễn ra theo một trong hai chế độ: bịphong tỏa (blocked) và không bị phong tỏa (non-blocked).

Chế độ bị phong tỏa (blocked): Trong chế độ bị phong tỏa, khi tiến trình clienthoặc server phát ra lệnh gửi dữ liệu (send), việc thực thi của tiến trình sẽ bị tạmngừng cho tới khi tiến trình nhận phát ra lệnh nhận dữ liệu (receive)

Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó (client hoặcserver) phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ liệu gửi tới thìviệc thực thi của tiến trình cũng sẽ bị tạm ngừng cho tới khi có dữ liệu gửi tới

- Chế độ không bị phong tỏa (non-blocked) Trong chế độ này, khi tiến trìnhclient hay server phát ra lệnh gửi dữ liệu thực sự, việc thực thi của tiến trình vẫnđược tiến hành mà không quan tâm đến việc có tiến trình nào phát ra lệnh nhận

dữ liệu đó hay không

Hình 2.1 – Tiến trình gữi và nhận message

10

Trang 17

2.2.1 Xây dựng chương trình

- Các class, enum, interface được sử dụng trong chương trình:

o MessageType.java [Enum]: Thể hiện kiểu dữ liệu sẽ được gửi/nhận giữa client

và server Chương trình sẽ dựa vào kiểu dữ liệu này để xác định kiểu dữ liệuđược nhận để xử lý một cách phù hợp

o Server.java [class]: Lớp này kế thừa lớp JFrame, sau khi nhận thông tin củaport cần lắng nghe Server sẽ tạo ra một luồng để lắng nghe tín hiệu kết nối từclient Khi có từ 2 kết nối trở lên, server sẽ tạo ra một game đấu rồi tiếp tụclắng nghe kết nối từ client

o Player.java [class]: Lớp này thể hiện một người chơi, lưu trữ kết nối giữa servervới client Lớp Player kế thừa từ lớp Thread, lắng nghe và xử lý dữ liệu nhận từclient và báo về server

o Match.java [class]: Lớp này implement Runnable, PlayerInterface, thể hiện mộtgame đấu Lớp Match xử lý các sự kiện mà hai người chơi thực hiện, thông báokết quả

o Client.java [class]: Lớp này kế thừa lớp JFrame và implementChessboardInterface thể hiển một client Mỗi client sẽ chịu trách nhiệm lấythông tin người chơi, yêu cầu kết nối tới server và xử lý và gửi dữ liệu đếnserver

o Chessboard.java [class]: Lớp này mô tả một bàn cờ, bao gồm các chức năng dichuyển quân cờ khi thực hiện một nước đánh, khởi tạo bàn cờ, hiển thị tin nhắngiữa hai người chơi,…

o Piece.java [class]: Lớp này là lớp asbtract, thể hiện một quân cờ, chứa cácphương thức và thuộc tính chung của các quân cờ

o King.java [class]: Lớp này thể hiện quân vua trong bàn cờ, kế thừa từ lớp Piece

o Queen.java [class]: Lớp này thể hiện quân hậu trong bàn cờ, kế thừa từ lớpPiece

o Rook.java [class]: Lớp này thể hiện quân xe trong bàn cờ, kế thừa từ lớp Piece

o Bishop.java [class]: Lớp này thể hiện quân pháo trong bàn cờ, kế thừa từ lớpPiece

Trang 18

o Knight.java [class]: Lớp này thể hiện quân mã trong bàn cờ, kế thừa từ lớpPiece.

o Pawn.java [class]: Lớp này thể hiện quân chốt trong bàn cờ, kế thừa từ lớpPiece

o Square.java [class]: Lớp này thể hiện một ô trong bàn cờ vua, kế thừa từ lớpJpanel

o Move.java [class]: Lớp này thể hiện một bước di chuyển của một quân cờ Baogồm một điểm nguồn và một điểm đích đều là kiểu

o ChessboardInterface.java [Interface]: Interface này bao gồm các phương thứcvới mục đích thông báo cho một observer hành động được thực hiện tại mộtchessboard

o PlayerInterface.java [Interface]: Interface này bao gồm các phương thức vớimục đích thông báo cho một observer hành động được thực hiện tại một player

2.2.2 Sơ đồ hoạt động.

Hình 2.2 – Sơ đồ hoạt động trò chơi cờ vua

12

Trang 19

2.2.3 Môi trường phát triển

Trang 20

CHƯƠNG 3: TRIỂN KHAI XÂY DỰNG HỆ THỐNG 3.1 Kết quả demo chương trình

- Server:

14

Trang 21

- Đăng nhập:

- Giao diện người chơi:

Trang 22

- Khung chat:

- Hiển thị trạng thái thắng hoặc thua của người chơi:

16

Trang 23

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

1 Kết luận

- Quá trình làm đồ án đã giúp em có thêm nhiều hiểu biết hơn về môn học Lậptrình mạng

- Ngoài ra đồ án này cũng giúp em hoàn thiện các kỹ năng của bản thân như: quản

lý thời gian, các viết và trình bày báo cáo, khả năng tự học, tìm hiểu những kiếnthức chuyên ngành nhưng không được dạy trên trường…

- Ưu điểm:

 Chương trình đã thực hiện các yêu cầu bài toán đặt ra

 Tạo ra giao diện trò chơi khá đẹp

 Người chơi có thể kết nối từ các máy tính khác nhau

- Hạn chế:

 Chưa có chức năng chơi với bạn bè

 Luồng xử lý còn khá phức tạp và chồng chéo

 Không lưu được kết quả người chơi

- Lời cuối cùng em xin cảm ơn các thầy cô đã tận tình chỉ dạy để em có thể hoànthành tốt đồ án này

2 Hướng phát triển

- Bổ sung chức năng yêu cầu chơi với bạn bè

- Kết nối cơ sở dữ liệu để lưu kết quả người chơi

- Tối ưu hoá chương trình

Trang 24

DANH MỤC TÀI LIỆU THAM KHẢO

[1] Wikipedia: https://en.wikipedia.org/wiki/Readers%E2%80%93writers_problem[2] voer.edu.vn: http://voer.edu.vn/c/bo-giao-thuc-lien-mang-ips-internet-

protocols/b14d14a4/266af9cd

[3] chess.com: https://www.chess.com/play/computer

18

Ngày đăng: 24/08/2023, 10:23

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

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

w