Khái niệm về mạng máy tính Mạng máy tính computer network là một hệ thống viễn thông kỹ thuật sốđược thiết kế để kết nối các máy tính và thiết bị khác lại với nhau, cho phép chúngtrao đổ
Trang 11.3.1 Mô hình mạng Client - Server 14
1.3.2 Mô hình mạng máy tính Peer-to-Peer 16
1.4 Lập trình socket 18
1.4.1 Khái niệm socket 18
1.4.2 Socket trong TCP và UDP 19
CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG XÂY DỰNG TRÒ CHƠICỜ CARO 27
2.1 Mô tả ứng dụng 27
2.1.1 Bàn cờ và quản lý trò chơi 27
2.1.2 Chức năng chính của ứng dụng 27
2.1.3 Menu và các chức năng bổ sung 28
2.2 Mô hình hoá chức năng 28
2.2.1 Xác định các usecase 28
2.2.2 Biểu đồ usecase tổng quát 29
2.2.3 Đặc tả các usecase 30
2.3 Phân tích xây dựng ứng dụng 37
Trang 22.3.1 Tạo bàn cờ 37
2.3.2 Đổi người chơi 38
2.3.3 Xử lý thắng thua 39
2.3.4 Tỉ số giữa 2 người chơi 40
2.3.5 Đếm ngược thời gian 41
2.3.6 Tạo menu và Hotkey 42
2.3.7 Chức năng Undo 43
2.3.8 Chức năng New Game 44
2.3.9 Tạo kết nối LAN giữa hai người chơi 45
2.3.10 Trao quân cờ qua LAN 45
2.3.11 Chat giữa 2 người chơi qua LAN 46
CHƯƠNG 3 XÂY DỰNG TRÒ CHƠI CỜ CARO 48
3.1 Giới thiệu ngôn ngữ C# và công nghệ NET Framework 48
3.1.1 Giới thiệu ngôn ngữ C#: 48
3.1.2 Công nghệ NET Framework 49
3.2 Thiết kế giao diện 51
3.2.1 Giao diện bàn cờ và hộp chat 51
3.2.2 Giao diện Client và Server khi kết nối thành công 52
3.2.3 Giao diện đánh cờ 53
3.2.4 Giao diện chức năng Help 54
3.2.5 Giao diện thông báo yêu cầu kết nối 55
3.2.6 Giao diện thông báo kết quả trò chơi 56
3.2.7 Giao diện chat 57
3.2.8 Giao diện thông báo người chơi đã thoát 58
3.2.9 Giao diện Menu 59
3.3 Đóng gói phần mềm 60
3.3.1 Sử dụng công cụ đóng gói của Visual Studio 60
3.3.2 Đóng gói bằng Advanced Installer 21.8.2 62
3.4 Kết quả và đánh giá 64
3.4.1 Kết quả 64
Trang 33.4.2 Ưu điểm 65
3.4.3 Nhược điểm 66
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 67
DANH MỤC TÀI LIỆU THAM KHẢO 69
Trang 4DANH MỤC CHỮ VIẾT TẮT
FTP: File Transfer ProtocolGAN: Global Area NetworkHTTP: Hypertext Transfer Protocol
IP: Internet ProtocolLAN: Local Area NetworkMAN: Metropolitan Area NetworkSMTP: Simple Mail Transfer Protocol
TCP: Transmission Control ProtocolUDP: User Datagram Protocol
WAN: Wide Area NetworkWLAN: Wireless Local Area Network
DANH MỤC BIỂU ĐỒ
Trang 5Biểu đồ 2.1 Biểu đồ usecase tổng quát 29
Biểu đồ 2.2 Biểu đồ usecase chi tiết Đánh cờ caro 30
Biểu đồ 2.3 Biểu đồ usecase chi tiêt “Chat” 31
Biểu đồ 2.4 Biểu đồ usecase chi tiết “Chơi mới” 32
Biểu đồ 2.5 Biểu đồ usecase chi tiết “Kết nối mạng Lan” 33
Biểu đồ 2.6 Biểu đồ usecase chi tiết “Undo” 35
Biểu đồ 2.7 Biểu đồ usecase chi tiết “Thoát” 36
Trang 6DANH MỤC HÌNH ẢN
Hình 1.1 Mạng máy tính dùng để trao đổi thông tin giữa các máy tính với nhau 9
Hình 1.2 Hình ảnh Network Operating System 12
Hình 1.3 Mô hình Client - Server 15
Hình 1.4 Nguyên tắc hoạt động của mô hình Client - Server 16
Hình 1.5 Mô hình Server-based và P2P-network 17
Hình 1.6 Mô phỏng giao thức TCP và UDP 20
Hình 3.4 Giao diện nút Help 54
Hình 3.5 Giao diện thông báo khi người chơi chưa chọn vào nút Connect 55
Hình 3.6 Giao diện khi thắng 56
Hình 3.7 Giao diện khi thua 56
Hình 3.8 Giao diện chat giữa 2 máy 57
Hình 3.9 Giao diện thông báo người chơi đã thoát 58
Hình 3.10 Giao diện Menu 59
Hình 3.11 Chọn Build Solution 61
Hình 3.12 Khởi chạy build thành công 61
Hình 3.13 Phần mềm.exe sẽ được khởi tạo bên trong tệp tin bin/debug 62
Hình 3.14 Bắt đầu quá trình đóng gói bằng Advanced Installer 63
Hình 3.15 Chọn các tệp tin cần thiết để đóng gói 64
Trang 7PHÂN CÔNG NHIỆM VỤ
Trần Nguyễn Duy Quang Trưởng nhóm, xây dựng và thiết kế trò chơi,
làm phần 2.1, 2.3 của bài báo cáoPhan Tiến Hải Xây dựng và thiết kế trò chơi, làm phần 2.2, 3.2
của bài báo cáoPhan Hữu Bình Làm 1.1, 1.2, 3.1, thiết kế PowerPointLê Vĩ Khang Làm 1.3, 1.4, 3.3, thiết kế bìa
Trang 8MỞ ĐẦU
Trong kỷ nguyên số hiện nay, lập trình mạng ngày càng trở nên phổ biến vàquan trọng, đặc biệt trong lĩnh vực phát triển ứng dụng và trò chơi trực tuyến Mộttrong những công nghệ cốt lõi của lập trình mạng là lập trình socket, cho phép cácứng dụng giao tiếp với nhau qua mạng Việc hiểu và sử dụng thành thạo lập trìnhsocket không chỉ giúp cải thiện khả năng kết nối mà còn mở ra nhiều cơ hội pháttriển các ứng dụng đa người chơi, trực tuyến và thời gian thực
Cờ caro là một trò chơi truyền thống quen thuộc với nhiều người, đặc biệt tạiViệt Nam Với luật chơi đơn giản nhưng không kém phần trí tuệ, cờ caro đã trởthành một trò chơi phổ biến không chỉ trong các giờ giải lao tại trường học mà còntrên các nền tảng trực tuyến Việc xây dựng một ứng dụng cờ caro trực tuyếnkhông chỉ giúp bảo tồn và phát huy trò chơi dân gian này mà còn cung cấp một nềntảng giải trí và rèn luyện trí tuệ cho người dùng
Chuyên đề này nhằm mục đích nghiên cứu và ứng dụng lập trình sockettrong việc xây dựng trò chơi cờ caro trực tuyến Thông qua việc tìm hiểu và triểnkhai các kỹ thuật lập trình socket, nhóm học viên sẽ phát triển một ứng dụng cờcaro có khả năng kết nối và cho phép người chơi tham gia thông qua mạng LAN
Qua đó, kết quả của chuyên đề không chỉ mang lại một ứng dụng cờ carotrực tuyến hoàn chỉnh mà còn cung cấp kiến thức và kinh nghiệm quý báu về lậptrình socket, ứng dụng trong xây dựng các trò chơi và ứng dụng mạng
Trang 9CHƯƠNG 1 TỔNG QUAN VỀ MẠNG MÁY TÍNH VÀ
LẬP TRÌNH SOCKET1.1 Khái niệm về mạng máy tính
Mạng máy tính (computer network) là một hệ thống viễn thông kỹ thuật sốđược thiết kế để kết nối các máy tính và thiết bị khác lại với nhau, cho phép chúngtrao đổi thông tin và dữ liệu một cách hiệu quả Các mạng máy tính có thể được cấuhình theo nhiều kiểu kiến trúc khác nhau, từ các mạng nhỏ trong một văn phòngđến các mạng lớn toàn cầu như Internet
Hình 1.1 Mạng máy tính dùng để trao đổi thông tin giữa các máy tính với nhau (1)
Mạng máy tính hoạt động thông qua các thiết bị nối kết mạng như bộ địnhtuyến (router), chuyển mạch (switch), điểm truy cập (access point) và các thiết bịkhác, cùng với các phương tiện truyền thông như dây cáp (cáp quang, cáp đồng
1() https://bizflycloud.vn/tin-tuc/he-thong-mang-la-gi-co-nhung-loai-mang-may-tinh-nao-20180309122116793.htm
Trang 10trục, cáp Ethernet) và các phương tiện truyền thông không dây (Wi-Fi, Bluetooth,sóng vô tuyến) Những thiết bị và phương tiện này liên kết các máy tính lại vớinhau, tạo thành một hệ thống thông tin liên lạc phức tạp.
Mạng máy tính có thể được phân loại theo nhiều tiêu chí khác nhau Vềphạm vi địa lý, chúng có thể là mạng cục bộ (LAN - Local Area Network), mạngđô thị (MAN - Metropolitan Area Network), mạng diện rộng (WAN - Wide AreaNetwork) hay thậm chí là mạng toàn cầu (GAN - Global Area Network) Mỗi loạimạng có những đặc điểm và ứng dụng riêng, phù hợp với nhu cầu sử dụng cụ thể
1.2 Các thành phần của mạng máy tính
1.2.1 Thiết bị phần cứng
Thiết bị phần cứng mạng (Network Hardware Devices) là các thành phần vậtlý cần thiết để thiết lập, kết nối và quản lý các thiết bị trong một mạng máy tính.Chúng đóng vai trò quan trọng trong việc đảm bảo truyền tải dữ liệu, bảo mật mạngvà quản lý các kết nối mạng Dưới đây là một mô tả chi tiết về một số thiết bị phầncứng mạng chính và chức năng của chúng:
- Bộ định tuyến (Router)
Bộ định tuyến (Router) là một trong những thiết bị quan trọng nhất trong mộtmạng máy tính Chức năng chính của bộ định tuyến là kết nối các mạng khác nhauvà định tuyến các gói dữ liệu từ mạng này sang mạng khác, thường là từ mạng nộibộ (LAN) đến mạng diện rộng (WAN) như Internet Bộ định tuyến giúp xác địnhđường đi tốt nhất cho dữ liệu và chuyển tiếp nó một cách hiệu quả
- Thiết bị chuyển mạch (Switch)
Thiết bị chuyển mạch (Switch) đóng vai trò kết nối các thiết bị trong cùngmột mạng nội bộ, giúp chúng có thể giao tiếp trực tiếp với nhau Switch giúp tối ưuhóa lưu lượng mạng bằng cách chỉ gửi dữ liệu đến thiết bị cần nhận, thay vì phátmọi gói dữ liệu đến tất cả các thiết bị như Hub
Trang 11- Điểm truy cập (Access Point)
Điểm truy cập (Access Point) cho phép các thiết bị không dây kết nối vớimạng có dây, tạo ra một mạng WLAN (Wireless Local Area Network) Điều nàyrất hữu ích trong việc cung cấp kết nối không dây cho các thiết bị di động nhưsmartphone, laptop và tablet Một điểm truy cập Wi-Fi trong nhà hoặc văn phònggiúp các thiết bị có thể kết nối Internet mà không cần dây cáp, mang lại sự linh hoạtvà tiện lợi trong việc sử dụng mạng
- Modem
Modem là thiết bị chuyển đổi tín hiệu số từ máy tính thành tín hiệu analog đểtruyền qua đường dây điện thoại hoặc cáp quang và ngược lại Nó kết nối mạng nộibộ với nhà cung cấp dịch vụ Internet (ISP) Chúng đóng vai trò quan trọng trongviệc thiết lập kết nối Internet ban đầu, chuyển đổi tín hiệu và đảm bảo rằng dữ liệucó thể được truyền tải một cách hiệu quả
- Tường lửa (Firewall)
Tường lửa (Firewall) bảo vệ mạng bằng cách kiểm soát lưu lượng vào và radựa trên các quy tắc bảo mật Tường lửa có thể là thiết bị phần cứng hoặc phầnmềm, và chúng giúp ngăn chặn các truy cập trái phép, bảo vệ mạng khỏi các cuộctấn công từ bên ngoài
- Cổng (Gateway)
Cổng (Gateway) kết nối và chuyển đổi giữa các mạng có giao thức khácnhau Nó hoạt động ở Lớp 3 trở lên của mô hình OSI và có thể xử lý lưu lượng giữacác mạng LAN và WAN hoặc giữa các mạng khác nhau hoàn toàn Gateway cũngđóng vai trò trong việc chuyển đổi giao thức và định dạng dữ liệu khi cần thiết,giúp các mạng với các cấu trúc và quy định khác nhau có thể giao tiếp với nhau
Trang 121.2.2 Phần mềm và giao thức mạng
1.2.2.1 Hệ điều hành mạng
Hệ điều hành mạng (Network Operating System - NOS) là một loại hệ điềuhành được thiết kế để hỗ trợ các máy tính cá nhân, máy trạm và các thiết bị kháckết nối và tương tác trong một mạng cục bộ (LAN) NOS không chỉ cung cấp cáctính năng cơ bản của một hệ điều hành truyền thống mà còn tích hợp các công cụvà phần mềm để các thiết bị có thể giao tiếp, quản lý và chia sẻ tài nguyên mộtcách hiệu quả trong mạng
Hình 1.2 Hình ảnh Network Operating System (2)
Một số hệ điều hành mạng phổ biến bao gồm:
- Windows Server: Hệ điều hành của Microsoft dành cho các máy chủ, cung
cấp nhiều dịch vụ mạng và khả năng quản lý tập trung
- Unix/Linux: Các phiên bản Unix và Linux được sử dụng rộng rãi trong các
môi trường doanh nghiệp nhờ tính ổn định, bảo mật và khả năng tùy biến cao
- Novell NetWare: Một hệ điều hành mạng nổi tiếng trong thập niên 1980 và
1990, được biết đến với khả năng quản lý tài nguyên mạng mạnh mẽ
2()https://quantrimang.com/cong-nghe/tim-hieu-he-dieu-hanh-mang-network-operating-system-nos-162955
Trang 131.2.2.2 Các giao thức mạng (TCP/IP, UDP, HTTP, FTP, SMTP)
Giao thức mạng là một thành phần quan trọng trong mạng máy tính, quyđịnh cách thức mà dữ liệu được truyền và nhận giữa các thiết bị Một trong nhữnggiao thức phổ biến nhất là TCP/IP (Transmission Control Protocol/InternetProtocol), nền tảng của Internet, cho phép các thiết bị trên toàn cầu giao tiếp vớinhau một cách hiệu quả và đáng tin cậy
- IP (Internet Protocol) là một số nguyên 32 bit, thường được biểu diễn dưới
dạng một dãy 4 số nguyên cách nhau bởi dấu chấm, ví dụ như 192.168.0.1 Mỗi sốnguyên trong địa chỉ IP được gọi là một byte, thường được biết đến như một octet(8 bits) Điều này có nghĩa là một địa chỉ IP có thể được chia thành bốn phần, mỗiphần gồm 8 bit, tổng cộng là 32 bit
- TCP (Transmission Control Protocol) là một giao thức truyền thông định
hướng kết nối, đảm bảo việc truyền dữ liệu trong mạng được thực hiện một cách tincậy thông qua các tính năng như truyền lại dữ liệu (retransmission), điều khiểnluồng (flow control), và kiểm tra lỗi (error checking)
- UDP (User Datagram Protocol) là một trong những giao thức cốt lõi trong
bộ giao thức TCP/IP Sử dụng UDP, các chương trình trên mạng máy tính có thểgửi các dữ liệu ngắn, được gọi là datagram, tới các máy khác Không giống nhưTCP, UDP không cung cấp các cơ chế đảm bảo độ tin cậy và thứ tự của các gói dữliệu Điều này có nghĩa là các gói dữ liệu gửi qua UDP có thể đến đích không theothứ tự hoặc thậm chí bị mất mà không có bất kỳ thông báo nào
- Hypertext Transfer Protocol (HTTP) là một trong những giao thức cốt lõi
của Internet, đóng vai trò then chốt trong việc truyền tải dữ liệu trên web HTTP lànền tảng cho việc truyền tải các trang web, hình ảnh, video, âm thanh, và nhiều tàinguyên khác qua Internet
- Giao thức File Transfer Protocol (FTP) cho phép người dùng truy cập và
chia sẻ các tập tin từ xa, tạo điều kiện cho việc trao đổi thông tin và dữ liệu giữa
Trang 14máy tính cá nhân và máy chủ một cách dễ dàng.
- Giao thức Simple Mail Transfer Protocol (SMTP) là một trong những
giao thức chính để gửi và nhận email trên Internet, đóng vai trò quan trọng trongviệc truyền tải email từ máy tính của người gửi đến máy chủ email của người nhận.SMTP được thiết kế để đảm bảo các email được gửi đi một cách chính xác và đếnđúng đích, giúp kết nối và duy trì liên lạc thông qua email
1.3 Các mô hình mạng phổ biến
1.3.1 Mô hình mạng Client - Server
Về bản chất, hệ thống Client - Server bao gồm hai máy tính giao tiếp vàtruyền tải dữ liệu cho nhau
Máy tính đóng vai trò là máy khách - Client
Máy khách (Client) là những máy tính không cung cấp tài nguyên cho cácmáy tính khác mà thay vào đó, chúng sử dụng các tài nguyên được cung cấp bởimáy chủ Trong mô hình này, một Client có thể đồng thời là một Server trong mộtbối cảnh khác, tùy thuộc vào nhu cầu và chức năng của nó Ví dụ, một máy tính cóthể hoạt động như một máy khách khi truy cập tài nguyên từ một máy chủ trungtâm, nhưng cũng có thể trở thành một máy chủ khi chia sẻ tài nguyên với các máytính khác trong mạng cục bộ Điều này cho thấy tính linh hoạt và đa dạng trongcách sử dụng máy tính trong mô hình Client - Server
Máy tính đóng vai trò là máy chủ - Server
Máy chủ (Server) là những máy tính được thiết kế để cung cấp tài nguyên vàdịch vụ cho các máy khách trong hệ thống mạng Server có thể cung cấp nhiều loạidịch vụ khác nhau như lưu trữ dữ liệu, quản lý cơ sở dữ liệu, chạy ứng dụng web,và cung cấp quyền truy cập đến các dịch vụ mạng khác Server không chỉ hỗ trợcác hoạt động của máy khách, giúp chúng hoạt động hiệu quả hơn, mà còn đóng vaitrò quan trọng trong việc quản lý và bảo mật dữ liệu, điều phối các yêu cầu từ nhiều
Trang 15máy khách, và đảm bảo sự ổn định của toàn bộ hệ thống mạng.
Ngoài ra, máy chủ thường có cấu hình phần cứng mạnh mẽ hơn, khả nănglưu trữ lớn hơn và tính năng bảo mật cao hơn so với máy khách, nhằm đảm bảo khảnăng xử lý nhiều yêu cầu cùng lúc và duy trì dịch vụ liên tục Server còn có thểthực hiện các nhiệm vụ bảo trì hệ thống, cập nhật phần mềm, và bảo vệ dữ liệuchống lại các mối đe dọa an ninh mạng, đảm bảo rằng tất cả các máy khách kết nốiđều nhận được dịch vụ tốt nhất
Hình 1.3 Mô hình Client - Server (3)
Client - Server là mô hình mạng máy tính mà trong đó, các máy tính con sẽđóng vai trò như máy khách, chúng làm nhiệm vụ gửi yêu cầu đến các máy chủ.Sau đó, máy chủ sẽ xử lý yêu cầu và trả kết quả về cho máy khách
Trong mô hình Client - Server, máy khách (client) và máy chủ (server) thựchiện việc trao đổi thông tin qua các giao thức mạng, đảm bảo rằng quá trình truyềntải dữ liệu diễn ra một cách có tổ chức và hiệu quả Giao thức mạng là một tập hợp
3() https://codelearn.io/sharing/tim-hieu-ve-mo-hinh-client-server
Trang 16các quy tắc và chuẩn mực mà cả máy chủ và máy khách đều phải tuân thủ để có thểhiểu và xử lý các thông điệp từ phía đối phương một cách chính xác Một số giaothức mạng phổ biến hiện nay bao gồm HTTPS, FTP, và TCP/IP.
Hình 1.4 Nguyên tắc hoạt động của mô hình Client - Server (4)
1.3.2 Mô hình mạng máy tính Peer-to-Peer
Mạng peer to peer (P2P) là một kiến trúc ứng dụng phân tán nhằm phân vùngnhiệm vụ hoặc khối lượng công việc giữa các peer Các peer là những thiết bị thamgia trong ứng dụng có đặc quyền như nhau Chúng tạo thành một mạng lưới cácnode ngang hàng
Trong mạng ngang hàng (peer-to-peer), mỗi nút mạng (peer) đóng góp mộtphần tài nguyên của mình, chẳng hạn như sức mạnh xử lý (processing power),không gian lưu trữ đĩa (storage), hoặc băng thông mạng (network bandwidth), đểcung cấp cho các nút mạng khác (participants) Điều này diễn ra mà không cần sựđiều phối từ một máy chủ trung tâm (central server) hoặc một máy chủ chủ đạo(host) ổn định Các peer hoạt động đồng thời như cả nhà cung cấp (provider) vàngười tiêu thụ (consumer) tài nguyên, tạo nên một hệ thống phân phối tài nguyênsong song
Điểm đặc trưng nổi bật của mô hình này là sự phi tập trung(decentralization), trong đó mọi peer đều có khả năng cung cấp và sử dụng tài
4( )https://codelearn.io/sharing/tim-hieu-ve-mo-hinh-client-server
Trang 17nguyên mà không cần phụ thuộc vào một thực thể trung tâm Điều này không chỉtối ưu hóa việc sử dụng tài nguyên sẵn có mà còn tăng cường khả năng chịu lỗi củahệ thống, vì không có điểm thất bại đơn lẻ nào có thể làm gián đoạn toàn bộ mạnglưới.
Khác biệt cơ bản giữa mô hình peertopeer và mô hình truyền thống Client Server là ở cách thức phân chia nhiệm vụ và tài nguyên Trong mô hình Client -Server, máy chủ (server) giữ vai trò cung cấp tài nguyên và dịch vụ, còn các máykhách (clients) chỉ tiêu thụ những tài nguyên đó Trái lại, trong mô hình peer-to-peer, mọi peer đều có vai trò song song: vừa là nhà cung cấp vừa là người tiêu thụ.Sự phân chia này không chỉ tạo ra một hệ thống linh hoạt hơn mà còn giảm tải chocác máy chủ trung tâm, đồng thời tăng cường khả năng mở rộng của hệ thống
-Mô hình peer-to-peer đã được ứng dụng rộng rãi trong nhiều lĩnh vực, từchia sẻ file, truyền tải nội dung số, đến các mạng blockchain và tiền điện tử Nhờtính chất phi tập trung và khả năng tự tổ chức, các mạng peer-to-peer có thể cungcấp dịch vụ một cách hiệu quả và bền vững mà không cần sự quản lý tập trung.Điều này không chỉ làm giảm chi phí vận hành mà còn mở ra cơ hội cho sự đổi mớivà phát triển trong lĩnh vực công nghệ mạng
Hình 1.5 Mô hình Server-based và P2P-network (5)
5() https://vietnix.vn/peer-to-peer-la-gi/
Trang 181.4 Lập trình socket
1.4.1 Khái niệm socket
Socket là một cánh cửa giao tiếp giữa hai tiến trình ứng dụng, đóng vai tròquan trọng trong việc kết nối và truyền thông tin giữa các chương trình Điểmmạnh của Socket là khả năng hỗ trợ nhiều ngôn ngữ lập trình như C, Java, Perl,Python, và nhiều nền tảng khác nhau, bao gồm cả *nix và Windows Điều này cónghĩa là các Socket được viết bằng các ngôn ngữ lập trình khác nhau và chạy trênbất kỳ nền tảng nào đều có thể tương tác và giao tiếp với nhau một cách hiệu quả.Trong bài viết này, tôi sẽ giới thiệu đến các bạn những khái niệm cơ bản về Socket,cũng như hướng dẫn cách lập trình Socket với các loại giao thức khác nhau, giúpbạn hiểu rõ hơn về cách thức hoạt động và ứng dụng của công nghệ này trong lậptrình
Lập trình Socket là một kỹ thuật lập trình cho phép các ứng dụng giao tiếpvới nhau qua mạng Socket được sử dụng để thiết lập một kênh liên lạc giữa haitiến trình, có thể chạy trên cùng một máy tính hoặc trên các máy tính khác nhau.Thông qua Socket, dữ liệu có thể được gửi và nhận một cách hiệu quả, đảm bảo sựliên lạc liên tục và ổn định giữa các ứng dụng
Socket dựa trên giao thức TCP (Transmission Control Protocol): Đảm bảodữ liệu được truyền một cách đáng tin cậy và theo thứ tự TCP socket được sử dụngrộng rãi trong các ứng dụng yêu cầu độ chính xác cao, chẳng hạn như truyền file,email, và các dịch vụ web
Socket dựa trên giao thức UDP (User Datagram Protocol): Cung cấp phươngthức truyền dữ liệu không đảm bảo sự tin cậy, nhưng nhanh hơn TCP UDP socketthích hợp cho các ứng dụng yêu cầu tốc độ cao hơn là độ tin cậy, chẳng hạn nhưtruyền video trực tiếp và các trò chơi trực tuyến
Trang 19* Quá trình lập trình Socket.
- Khởi tạo Socket: Tạo một đối tượng Socket trên cả máy chủ và máy khách.- Liên kết địa chỉ (Binding): Gán một địa chỉ IP và số cổng cho Socket(thường chỉ thực hiện trên máy chủ)
- Lắng nghe (Listening): Máy chủ chuyển sang trạng thái lắng nghe các kếtnối đến từ các máy khách
- Chấp nhận kết nối (Accepting): Máy chủ chấp nhận yêu cầu kết nối từ máykhách
- Gửi và nhận dữ liệu: Hai bên tiến hành trao đổi dữ liệu thông qua các hàmgửi và nhận
- Đóng kết nối: Sau khi hoàn tất việc trao đổi dữ liệu, Socket được đóng đểgiải phóng tài nguyên
* Ưu điểm của lập trình Socket.
- Tốc độ và hiệu suất cao: Do truyền dữ liệu trực tiếp qua mạng.- Linh hoạt: Hỗ trợ nhiều loại giao thức và ngôn ngữ lập trình.- Khả năng mở rộng: Có thể mở rộng để phục vụ nhiều kết nối đồng thời
1.4.2 Socket trong TCP và UDP
Chức năng của socket là kết nối giữa client và server thông qua các giao thứcTCP/IP và UDP để truyền và nhận dữ liệu qua Internet Giao diện lập trình ứngdụng mạng này chỉ có thể hoạt động khi đã có thông tin về địa chỉ IP và số hiệucổng của hai ứng dụng cần trao đổi dữ liệu với nhau
Trang 20Hình 1.6 Mô phỏng giao thức TCP và UDP (6)
Để socket có thể hoạt động, hai ứng dụng cần truyền thông tin phải đáp ứngcác điều kiện sau:
- Hai ứng dụng có thể nằm cùng trên một máy hoặc trên hai máy khác nhau.Nếu hai ứng dụng nằm trên hai máy khác nhau, mỗi máy sẽ có địa chỉ IP riêng, vàsocket sẽ dùng các địa chỉ IP này để kết nối chúng lại với nhau
- Trong trường hợp hai ứng dụng cùng nằm trên một máy, số hiệu cổng củachúng phải khác nhau Điều này là do mỗi cổng đại diện cho một luồng giao tiếpriêng biệt và không thể có hai luồng giao tiếp cùng sử dụng một cổng trên cùng mộtmáy Do đó, việc sử dụng các cổng khác nhau giúp đảm bảo rằng dữ liệu đượctruyền đến đúng ứng dụng
- Ngoài ra, việc truyền dữ liệu qua Internet còn đòi hỏi các ứng dụng phảituân thủ các quy tắc và giao thức truyền thông mạng, đảm bảo tính toàn vẹn và bảomật của dữ liệu Socket đóng vai trò quan trọng trong việc quản lý kết nối, gửi và
6() https://semiconvn.com/home/hoc-thiet-ke-vi-mach/bai-hc-vi-mch/12581-socket-la-gi-so-sanh-udp-va-tcp.html
Trang 21nhận dữ liệu, cũng như xử lý các vấn đề liên quan đến mạng như mất gói tin hay trễtruyền.
* TCP hoạt động theo hướng kết nối (connection-oriented) Trước khi truyền
dữ liệu giữa hai máy, nó thiết lập một kết nối giữa hai máy theo phương thức “bắttay ba bước (three-way handshake)” bằng cách gửi gói tin ACK từ máy đích sangmáy gửi Trong suốt quá trình truyền gói tin, máy gửi yêu cầu máy đích xác nhậnđã nhận đủ các gói tin đã gửi Nếu có gói tin bị mất, máy đích sẽ yêu cầu máy gửigửi lại TCP thường xuyên kiểm tra xem gói tin có bị lỗi hay không và cho phépquy định số lượng gói tin được gửi trong một lần gửi (window-sizing) Điều nàyđảm bảo máy nhận nhận được đầy đủ các gói tin mà máy gửi đã gửi, dẫn đếntruyền dữ liệu chậm hơn UDP nhưng đáng tin cậy hơn UDP
* UDP hoạt động theo hướng không kết nối (connectionless) Không yêu cầu
thiết lập kết nối giữa hai máy gửi và nhận, không có sự đảm bảo gói tin khi truyềnđi và không thông báo về việc mất gói tin, cũng như không kiểm tra lỗi của gói tin
1.4.2.1 Stream Socket
Stream Socket hay còn gọi là socket hướng kết nối, là socket hoạt động
thông qua giao thức TCP (Transmission Control Protocol) Stream Socket chỉ hoạtđộng khi server và client đã kết nối với nhau
TCP/IP viết tắt của Transmission Control Protocol (TCP) và InternetProtocol (IP), là giao thức cài đặt truyền thông và chồng giao thức mà hầu hết cácmạng máy tính ngày nay đều sử dụng để kết nối TCP/IP được đặt theo tên của haigiao thức quan trọng là giao thức điều khiển giao vận (TCP) và giao thức liên mạng(IP) Đây là hai giao thức đầu tiên trên thế giới được định nghĩa và đóng vai trò cốtlõi trong việc thiết lập nền tảng cho mạng Internet hiện đại
Chính nhờ sự kết hợp của TCP và IP mà các mạng máy tính có thể hoạt độngmột cách liên tục và hiệu quả, bất kể sự khác biệt về phần cứng hay hệ điều hành.Điều này đã giúp TCP/IP trở thành nền tảng chính cho sự phát triển của Internet và
Trang 22các mạng máy tính trên toàn thế giới
- Truyền dữ liệu liên tục: Dữ liệu được truyền dưới dạng một luồng (stream),cho phép truyền các khối dữ liệu lớn mà không bị gián đoạn
* Quy trình hoạt động:
- Tạo socket: Cả client và server đều phải tạo một socket Đối với server,socket này thường được gọi là “listening socket” và nó lắng nghe yêu cầu kết nối từ
7() https://semiconvn.com/home/hoc-thiet-ke-vi-mach/bai-hc-vi-mch/12581-socket-la-gi-so-sanh-udp-va-tcp.html
Trang 24thể hoạt động kể cả khi không có sự thiết lập kết nối giữa 2 máy với nhau.
Datagram Socket là một loại socket được sử dụng để truyền và nhận các góidữ liệu độc lập, gọi là datagram, qua mạng máy tính Loại socket này chủ yếu sửdụng giao thức UDP (User Datagram Protocol) để truyền dữ liệu Khác với StreamSocket (dựa trên TCP), Datagram Socket không thiết lập kết nối trước khi truyềndữ liệu, và mỗi datagram được gửi một cách độc lập
Hình 1.8 Lập trình Socket với UDP (8)
Datagram Socket không yêu cầu thiết lập kết nối trước khi truyền dữ liệu
8()https://semiconvn.com/home/hoc-thiet-ke-vi-mach/bai-hc-vi-mch/12581-socket-la-gi-so-sanh-udp-va-tcp.html
Trang 25Mỗi gói dữ liệu (datagram) được gửi độc lập và có thể theo các đường khác nhauđể đến đích.
Giao thức UDP không đảm bảo rằng dữ liệu sẽ đến đích theo thứ tự hoặckhông bị mất Điều này có nghĩa là các ứng dụng sử dụng Datagram Socket phải tựquản lý việc phát hiện và xử lý lỗi
Do không có cơ chế kiểm soát kết nối và lỗi phức tạp, Datagram Socket cóhiệu suất cao và overhead thấp hơn so với Stream Socket
- Trò chơi trực tuyến: Nhiều trò chơi trực tuyến sử dụng UDP để gửi và nhậncác gói dữ liệu nhanh chóng, đảm bảo phản hồi nhanh hơn so với TCP
- Hệ thống DNS (Domain Name System): UDP được sử dụng trong hệ thốngDNS để gửi các yêu cầu và phản hồi nhanh chóng
* Ưu điểm:
- Hiệu suất cao: UDP có tốc độ truyền dữ liệu nhanh hơn so với TCP dokhông có cơ chế kiểm soát kết nối và lỗi phức tạp
Trang 26- Đơn giản và dễ triển khai: Cấu trúc của Datagram Socket và UDP đơn giảnhơn so với TCP, giúp dễ dàng triển khai trong các ứng dụng không yêu cầu độ tincậy cao.
Trang 27CHƯƠNG 2 PHÂN TÍCH THIẾT KẾ HỆ THỐNG XÂY DỰNG TRÒ CHƠI
CỜ CARO2.1 Mô tả ứng dụng
2.1.1 Bàn cờ và quản lý trò chơi
Ứng dụng Caro qua mạng LAN cung cấp một giao diện đồ họa thân thiện vàtrực quan, tập trung chủ yếu vào bàn cờ Caro và các tính năng quản lý trò chơi
- Bàn cờ Caro: Bàn cờ được vẽ trên giao diện chính, bao gồm một lưới ô
vuông có kích thước chuẩn 20x20 Mỗi ô có thể được đánh dấu bởi người chơi Xhoặc O, và giao diện sẽ liên tục cập nhật trạng thái của bàn cờ sau mỗi nước đi
- Thông tin người chơi: Hai người chơi được biểu diễn bởi các biểu tượng
X và O, có tên người chơi hiển thị bên cạnh Điểm số của từng người chơi cũngđược hiển thị trên giao diện để người chơi có thể theo dõi trạng thái của mình trongsuốt trận đấu
- Thời gian lượt đi: Để giới hạn thời gian mỗi lượt đi, giao diện sử dụng một
thanh tiến trình (ProgressBar) để hiển thị thời gian còn lại cho người chơi hiện tại.Điều này khuyến khích người chơi đưa ra nước đi nhanh chóng và tạo cảm giáccăng thẳng trong từng lượt chơi
2.1.2 Chức năng chính của ứng dụng
Ứng dụng không chỉ là một trò chơi Caro đơn thuần mà còn tích hợp nhiềutính năng nâng cao, giúp cải thiện trải nghiệm người dùng
- Chơi qua mạng LAN: Đây là tính năng chính của ứng dụng, cho phép hai
người chơi ở hai máy tính khác nhau có thể kết nối và chơi Caro với nhau quamạng LAN Người chơi có thể thưởng thức trận đấu mà không cần phải ngồi cạnhnhau
- Chat trực tiếp: Ngoài việc chơi Caro, người chơi còn có thể giao tiếp với
Trang 28nhau thông qua tính năng chat trực tiếp tích hợp sẵn trong ứng dụng Tin nhắn vănbản giúp người chơi trò chuyện và thêm sự hứng thú trong suốt quá trình chơigame.
- Đồng bộ hóa dữ liệu: Khi chơi qua mạng LAN, mọi thao tác như đánh cờ,
yêu cầu lượt chơi mới, yêu cầu Undo, tỉ số trận đấu, kết thúc game và chat đềuđược đồng bộ hóa giữa hai máy tính Điều này đảm bảo rằng cả hai người chơi đềucó cùng trải nghiệm và không gặp phải sự cố mất dữ liệu
- Chức năng Undo và New Game: Người chơi có thể hoàn tác lại nước đi
cuối cùng với tính năng Undo, giúp cải thiện chiến lược và sửa chữa lỗi mộtlần/một lượt trong trường hợp cần thiết Ngoài ra, tính năng New Game cho phépngười chơi bắt đầu một trận đấu mới một cách dễ dàng sau khi kết thúc trận đấuhiện tại
2.1.3 Menu và các chức năng bổ sung- Menu chức năng: Giao diện của ứng dụng cung cấp các menu chức năng
để người chơi có thể điều khiển trò chơi một cách thuận tiện Menu New Game chophép khởi động lại trò chơi, menu Undo giúp hoàn tác nước đi cuối cùng và menuQuit để thoát khỏi ứng dụng
- Phím tắt: Các phím tắt được cung cấp để người chơi có thể sử dụng nhanh
chóng các chức năng chính như Undo bằng tổ hợp phím Ctrl + Z, lượt chơi mớiNew Game bằng tổ hợp phím Ctrl + N, thoát khỏi chương trình bằng tổ hợp phímCtrl + Z giúp tiết kiệm thời gian và tăng tính tương tác của người chơi
2.2 Mô hình hoá chức năng
Trang 29- Chơi mới: Cho phép bắt đầu một ván cờ caro mới.- Kết nối mạng LAN: Cho phép người chơi kết nối tới mạng LAN của đối thủ để chơi.
- Undo: Cho phép người chơi hoàn tác lại lượt đánh trước đó.- Thoát trò chơi: Cho phép người chơi thoát khỏi trò chơi
2.2.2 Biểu đồ usecase tổng quát
Trang 30Biểu đồ 2.1 Biểu đồ usecase tổng quát.
Trang 312.2.3 Đặc tả các usecase
2.2.3.1 Đánh cờ caro
Biểu đồ 2.2 Biểu đồ usecase chi tiết Đánh cờ caro.
- Tác nhân chính:+) Client: Người chơi+) Server: Máy chủ quản lý trò chơi và kết nối mạng LAN- Mô tả ngắn gọn:
Client kết nối đến Server qua mạng LAN để chơi cờ caro Mỗi lượt đi đượckiểm tra và cập nhật bởi Server Kết quả của lượt đi và trạng thái bảng cờ đượcthông báo lại cho cả Client và Server
- Luồng sự kiện chính:+) Client gửi yêu cầu đánh cờ với vị trí ô được chọn lên Server.+) Server kiểm tra tính hợp lệ của lượt đi (ô trống)
+) Nếu hợp lệ, Server cập nhật bảng cờ với ký hiệu của người chơi.+) Server kiểm tra điều kiện thắng/thua hoặc hòa sau lượt đi
Trang 32+) Server gửi thông tin cập nhật bảng cờ và kết quả của lượt đi cho Client.+) Nếu có kết quả, Server thông báo kết quả cho cả Client và Server.- Luồng sự kiện phụ:
+) Lượt đi không hợp lệ: Nếu ô đã được đánh dấu, Server thông báo lỗi vàyêu cầu Client chọn lại
- Điều kiện kết thúc: Có kết quả thắng hoặc thua+) Một bên người chơi đánh được 5 nước thẳng hàng theo hàng ngang hoặchàng dọc hoặc đường chéo liên tục sẽ thắng
+) Một bên người chơi không đánh lượt của mình trong 10 giây sẽ thua
2.2.3.2 Chat
Biểu đồ 2.3 Biểu đồ usecase chi tiêt “Chat”.
- Tác nhân chính:+) Client: Người dùng gửi và nhận tin nhắn.+) Server: Máy chủ quản lý kết nối và truyền tải tin nhắn
Trang 33- Mô tả ngắn gọn:+) Client kết nối đến Server qua mạng LAN để gửi và nhận tin nhắn chattrong trò chơi.
- Điều kiện đầu vào: 2 máy client và server đã được kết nối- Kết quả đầu ra: Hiển thị các thông điệp đã gửi và nhận lên bảng Chat- Luồng sự kiện chính:
+) Client gửi tin nhắn đến Server.+) Server kiểm tra kết nối
+) Server truyền tin nhắn đến Client trong trò chơi.+) Client nhận tin nhắn từ Server
- Luồng sự kiện phụ+) Kết nối bị mất: Server thông báo lỗi và yêu cầu Client kết nối lại
2.2.3.3 Chơi mới
Biểu đồ 2.4 Biểu đồ usecase chi tiết “Chơi mới”.
- Tác nhân chính:- Client: Người dùng khởi tạo trò chơi mới
Trang 34- Server: Máy chủ quản lý kết nối và khởi tạo trò chơi mới.- Mô tả ngắn gọn: Client kết nối đến Server qua mạng LAN để khởi tạo mộttrò chơi caro mới Server sẽ thiết lập trạng thái ban đầu của trò chơi và thông báolại cho Client.
- Điều kiện đầu vào: Không- Kết quả đầu ra: Giao diện game đã được reset- Luồng sự kiện chính:
+) Client gửi yêu cầu khởi tạo trò chơi mới đến Server.+) Server thiết lập trạng thái ban đầu của trò chơi.+) Server thông báo cho Client rằng trò chơi mới đã được khởi tạo thànhcông
- Luồng sự kiện phụ:+) Kết nối bị mất: Server thông báo lỗi và yêu cầu Client kết nối lại
Trang 352.2.3.4 Kết nối mạng LAN
Biểu đồ 2.5 Biểu đồ usecase chi tiết “Kết nối mạng Lan”.
- Tác nhân chính:+) Client: Người dùng thiết lập kết nối mạng LAN để chơi game.+) Server: Máy chủ quản lý kết nối mạng LAN và kết nối các client.- Mô tả ngắn gọn:
- Client kết nối đến Server qua mạng LAN để thiết lập kết nối chơi game.Server xác thực và quản lý các kết nối từ Client
- Luồng sự kiện chính:+) Client gửi yêu cầu kết nối đến Server.+) Server xác thực yêu cầu kết nối.+) Server chấp nhận và thiết lập kết nối với Client.+) Server thông báo cho Client rằng kết nối mạng LAN đã được thiết lậpthành công
Trang 36- Luồng sự kiện phụ:+) Kết nối thất bại: Nếu kết nối không thành công, Server thông báo lỗi vàyêu cầu Client thử lại.
2.2.3.5 Undo
Biểu đồ 2.6 Biểu đồ usecase chi tiết “Undo”.
- Tác nhân chính:+) Client: Người dùng muốn hoàn tác một lượt đi trong trò chơi caro.+) Server: Máy chủ quản lý trạng thái trò chơi và thực hiện hành động hoàntác
- Mô tả ngắn gọn: Client yêu cầu hoàn tác một lượt đi gần nhất trong trò chơicaro Server sẽ kiểm tra và thực hiện hành động hoàn tác, sau đó thông báo lại choClient
- Luồng sự kiện chính:+) Client gửi yêu cầu hoàn tác lượt đi đến Server.+) Server kiểm tra trạng thái trò chơi để xác định xem có thể hoàn tác haykhông