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

Đồ án lập trình mạng : Viết chương trình chơi game gỡ mìn-minesweeper ứng dụng socket

19 3,2K 43

Đ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

Định dạng
Số trang 19
Dung lượng 424,5 KB

Nội dung

Đồ án lập trình mạng : Viết chương trình chơi game gỡ mìn-minesweeper ứng dụng socket . Game dò mìn trên java. lập trình ứng dụng mạng.

Trang 1

LỜI CẢM ƠN

Em xin gửi lời cảm ơn chân thành tới các thầy cô trong Khoa CNTT, đặc biệt là thầy Mai Văn Hà đã hướng dẫn, chỉ bảo tận tình trong suốt thời gian em thực hiện đề tài này.

Do còn nhiều hạn chế về trình độ cũng như thời gian nên đề tài này sẽ không tránh khỏi sai sót Em rất mong nhận được sự chỉ bảo góp ý của các thầy

cô và các bạn để giúp em hoàn thiện nó tốt hơn.

Sinh viên thực hiện

Trần Quốc Nhật Trung

Trang 2

LỜI MỞ ĐẦU

Ngày nay với sự phát triển nhanh chóng của công nghê thông tin và Internet nên ứng dụng của nó vào nhu cầu học tập và làm việc là rất lớn Trong các công ty cũng như trong trường học thì việc gửi nhận cấc tập tin trong nội bộ công ty hay trường học

là rất cần thiết để có thể dễ dàng quản lý và làm việc Việc xây dựng một chương trình truyền file đem đến những lợi ích như: các máy tính trong mạng có thể trao đổi thông tin với nhau một các dễ dàng, không bị vướng mắc về mặt địa lý, Nhưng bên cạnh đó cũng đặt ra một số vấn đề là: làm thế nào để quản lý được các máy trạm, và nhiều máy

có thể kết nối với nhau được hay không? Là một sinh viên công nghệ thông tin, thì với hiểu biết và kiến thức tích lũy được của mình trong thời gian học ở trường cũng như là

tự học, nên nhóm em quyết định chọn đề tài “Xây dựng trò chơi dò mìn qua mạng” với

hy vọng sẽ ứng dụng những gì đã học để thiết kế một trò chơi nhỏ, qua đó phát triển ứng dụng TCP

Trang 3

MỤC LỤC

LỜI MỞ ĐẦU 2

MỤC LỤC 3

CHƯƠNG 1: TỔNG QUAN VỀ LẬP TRÌNH MẠNG 1

1.1 Giao thức TCP/IP 1

1.2 So sánh 2 giao thức TCP và UDP 2

1.3 Địa chỉ IP 3

CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH 5

2.1 Tổng quan về socket: 5

2.1.1 Định nghĩa: 5

2.1.2 Nguyên lý hoạt động 5

2.1.3 Socket hỗ trợ TCP 5

2.2 Sử dụng socket trong NET framework 7

2.2.1 Giới thiệu về NameSpace System.Net và System.Net.Sockets 7

2.2.2: Sử dụng các lớp hổ trợ từ lớp socket 9

2.2.2.1 Lớp TCPClient 9

2.2.2.2 Lớp TCPListener 10

2.2 Trò chơi dò mìn: 11

2.3.1 Luật chơi 11

2.3.2 Các trạng thái của một ô 11

2.3.4 Các trường hợp khi mở một ô 12

2.3.5 Cắm cờ và đánh dấu 12

CHƯƠNG 3: CHƯƠNG TRÌNH DEMO 13

KẾT LUẬN 15

TÀI LIỆU THAM KHẢO 16

Trang 4

Trần Quốc Nhật Trung – 12TLT.CNTT Trang 4

Trang 5

DANH SÁCH HÌNH ẢNH

Hình 1.1 Mô hình tham chiếu và giao thức TCP/IP 2

Hình 2.1: Socket hổ trợ TCP 7

Hình 3.1: Khởi tạo server 13

Hình 3.2: Server đợi kết nối từ client 13

Hình 3.3: Khởi tạo client 14

Hình 3.4: Server và client truyền dữ liệu cho nhau 14

Trang 6

CHƯƠNG 1: TỔNG QUAN VỀ LẬP TRÌNH MẠNG

1.1 Giao thức TCP/IP

IP là một họ giao thức để cung cấp phương tiện truyền thông liên mạng và nó được cấu trúc theo kiểu phân cấp

Khác với mô hình OSI tầng liên mạng sử dụng giao thức kết nối mạng "không liên kết" (connectionless) IP, tạo thành hạt nhân hoạt động của Internet Cùng với các thuật toán định tuyến RIP, OSPF, BGP, tầng liên mạng IP cho phép kết nối một cách mềm dẻo và linh hoạt các loại mạng "vật lý" khác nhau như: Ethernet, Token Ring , X.25

Giao thức trao đổi dữ liệu "có liên kết" (connection - oriented) TCP được sử dụng ở tầng vận chuyển để đảm bảo tính chính xác và tin cậy việc trao đổi dữ liệu dựa trên kiến trúc kết nối "không liên kết" ở tầng liên mạng IP

Các giao thức hỗ trợ ứng dụng phổ biến như truy nhập từ xa (telnet), chuyển tệp (FTP), dịch vụ World Wide Web (HTTP), thư điện tử (SMTP), dịch vụ tên miền (DNS) ngày càng được cài đặt phổ biến như những bộ phận cấu thành của các hệ điều hành thông dụng như UNIX (và các hệ điều hành chuyên dụng cùng họ của các nhà cung cấp thiết bị tính toán như AIX của IBM, SINIX của Siemens, Digital UNIX của DEC), Windows9x/NT, NovellNetware,

Hình 1.1 Mô hình tham chiếu và giao thức TCP/IP

Trang 7

1.2 So sánh 2 giao thức TCP và UDP

UDP (User Datagram Protocol) là một trong những giao thức cốt lõi của giao thức TCP/IP Dùng UDP, chương trình trên mạng máy tính có thể gởi những dữ liệu ngắn được gọi là datagram tới máy khác UDP không cung cấp sự tin cậy và thứ tự truyền nhận mà TCP làm Các gói dữ liệu có thể đến không đúng thứ tự hoặc bị mất

mà không có thông báo Tuy nhiên UDP nhanh và hiệu quả hơn đối với các mục tiêu như kích thước nhỏ và yêu cầu khắt khe về thời gian Do bản chất không trạng thái của

nó nên nó hữu dụng đối với việc trả lời các truy vấn nhỏ với số lượng lớn người yêu cầu

TCP (Transmission Control Protocol - "Giao thức điều khiển truyền vậ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ảo chuyể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òn phâ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ủ

Khác nhau (cơ bản):

Các header của TCP và UDP khác nhau ở kích thước (20 và 8 byte) nguyên nhân chủ yếu là do TCP phải hộ trợ nhiều chức năng hữu ích hơn(như khả năng khôi phục lỗi) UDP dùng ít byte hơn cho phần header và yêu cầu xử lý từ host ít hơn

TCP :

- Dùng cho mạng WAN

- Không cho phép mất gói tin

- Đảm bảo việc truyền dữ liệu

- Tốc độ truyền thấp hơn UDP

UDP:

Trang 8

- Dùng cho mạng LAN.

- Cho phép mất dữ liệu

- Không đảm bảo

- Tốc độ truyền cao, VolP truyền tốt qua UDP

1.3 Địa chỉ IP

Địa chỉ IP (IP là viết tắt của từ tiếng Anh: Internet Protocol - giao thức Internet)

là một địa chỉ đơn nhất mà những thiết bị điện tử hiện nay đang sử dụng để nhận diện

và liên lạc với nhau trên mạng máy tính bằng cách sử dụng giao thức Internet

Một cách đơn giản hơn: IP là một địa chỉ của một máy tính khi tham gia vào mạng nhằm giúp cho các máy tính có thể chuyển thông tin cho nhau một cách chính xác, tránh thất lạc Có thể coi địa chỉ IP trong mạng máy tính giống như địa chỉ nhà của bạn để nhân viên bưu điện có thể đưa thư đúng cho bạn chứ không phải một người nào khác

Bất kỳ thiết bị mạng nào, bao gồm bộ định tuyến, bộ chuyển mạch mạng, máy vi tính, máy chủ hạ tầng (như NTP, DNS, DHCP, SNMP, v.v.), máy in, máy fax qua Internet, và vài loại điện thoại khi tham gia vào mạng đều có địa chỉ riêng và địa chỉ này là đơn nhất trong phạm vi của một mạng cụ thể Vài địa chỉ IP có giá trị đơn nhất trong phạm vi Internet toàn cầu, trong khi một số khác chỉ cần phải đơn nhất trong phạm vi một công ty

Địa chỉ IP do Tổ chức cấp phát số hiệu Internet (IANA) quản lý và tạo ra IANA nói chung phân chia những "siêu khối" đến Cơ quan Internet khu vực, rồi từ đó lại phân chia thành những khối nhỏ hơn đến nhà cung cấp dịch vụ Internet và công ty

Trang 9

CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH

2.1 Tổng quan về socket:

2.1.1 Định nghĩa:

Socket là một phương pháp để thiết lập kết nối truyền thông giữa một chương trình yêu cầu dịch vụ (được gán nhãn là Client) và một chương trình cung cấp dịch vụ ( được gán nhãn là Server) trên mạng hoặc trên cùng một máy tính

2.1.2 Nguyên lý hoạt động

- Chương trình phía Server tạo ra một socket, socket này được chương trình gắn với một cổng trên server Sau khi đựợc tạo ra socket này (mà từ nay ta sẽ gọi là socket phía server) sẽ chờ nghe yêu cầu từ phía client

- Khi chương trình phía Client cần kết nối với một Server, nó cũng tạo ra một socket, socket này cũng được hệ điều hành gắn với một cổng Chương trình Client sẽ cung cấp cho Socket của nó (mà từ nay ta sẽ gọi là Socket phía Client) điạ chỉ mạng và cổng của Socket phía Server và yêu cầu thực hiện kết nối (nếu chương trình định sử dụng giao thức hướng kết nối) hoặc truyền dữ liệu ( nếu chương trình sử dụng giao thức không hướng kết nối)

- Chương trình phía Server và chương trình phía Client trao đổi dữ liệu với nhau bằng cách đọc từ Socket hoặc ghi vào Socket của minh Các socket ở hai phía nhận dữ liệu từ ứng dụng và đóng gói để gửi đi hoặc nhận các dữ liệu được gửi đến và chuyển cho chương trình ứng dụng bởi socket ở cả hai phía đều biết được địa chỉ mạng và điạ chỉ cổng của nhau Ở bước thứ hai chúng ta thấy chương trình ứng dụng phải lựa chọn giao thức mà nó định sử dụng để trao đổi dữ liệu Tùy theo việc chúng ta sử dụng giao thức nào (TCP hay UDP) mà cách thức xử lý trước yêu cầu của client có thể khác Sau đây chúng ta sẽ xem xét chi tiết các thức trao đổi dữ liệu của Socket ứng với từng loại giao thức

2.1.3 Socket hỗ trợ TCP

Trang 10

Ở phía Server: Khi một ứng dụng trên server hoạt động nó sẽ tạo ra một socket

và đăng ký với server một cổng ứng dụng và chờ đợi yêu cầu kết nối từ phía client qua cổng này

Ở phía client: Nó biết địa chỉ của máy trên đó server đang chạy và cổng và server đang chờ nghe yêu cầu Do đó khi muốn kết nối đến Server, nó cũng tạo ra một socket chứa địa chỉ máy client và cổng của ứng dụng trên máy client đồng thời client sẽ cung cấp cho socket của nó địa chỉ và cổng của Server mà nó cần kết nối và yêu cầu Socket thực hiện kết nối

Khi Server nhận được yêu cầu kết nối từ Client, nếu nó chấp nhận thì server sẽ sinh ra một socket mới được gắn với một cổng khác với cổng mà nó đang nghe yêu cầu Sở dĩ server làm như vậy bởi nó cần cổng cũ để tiếp tục nghe yêu cầu từ phía client trong khi vẫn cần một kết nối với client

Sau đó chương trình ứng dụng phía Server sẽ gửi thông báo chấp nhận kết nối cho Client cùng thông tin về địa chỉ cổng mới của socket mà nó dành cho Client Quay lại phía client, nếu kết nối được chấp nhận nghĩa là socket của nó đã được tạo ra thành công và nó có thể sử dụng socket để giao tiếp với server bằng cách viết và ghi tới socket theo cách giao tiếp với một tài nguyên trên máy tính thông thường

Trang 11

Hình 2.1: Socket hổ trợ TCP

2.2 Sử dụng socket trong NET framework

2.2.1 Giới thiệu về NameSpace System.Net và System.Net.Sockets

Cung cấp một giao diện lập trình đơn giản cho rất nhiều các giao thức mạng Có rất nhiều lớp để lập trình

Ta quan tâm lớp IPAdress, IPEndPoint, DNS, …

- Lớp IPAdress:

- Any: Cung cấp một ñịa chỉ IP ñể chỉ ra rằng Server phải lắng nghe trên tất cả các Card mạng

- Broadcast: Cung cấp một địa chỉ IP quảng bá

- Loopback: Trả về một ñịa chỉ IP lặp

- AdressFamily: Trả về họ địa chỉ của IP hiện hành

- Lớp IPAddress

- Phương thức khởi tạo

IPAddress ( B y te [ ]) IPAddress ( Int64)

- IsLoopback: Cho biết ñịa chỉ có phải ñịa chỉ lặp không

Trang 12

- Parse: Chuyển IP dạng xâu về IP chuẩn

- ToString: Trả ñịa chỉ IP về dạng xâu

- TryParse: Kiểm tra IP ở dạng xâu có hợp lệ không?

- Lớp IPEndPoint

Phương thức khởi tạo

IPEndPoint (Int64, Int32) IPEndPoint (IPAddress, Int32) Create: Tạo một EndPoint từ một ñịa chỉ Socket

ToString : Trả về địa chỉ IP và số hiệu cổng theo khuôn dạng, địa chỉ:cổng ví dụ: 192.168.1.1:8080

- Lớp DNS

- HostName: Cho biết tên của máy ñược phân giải

- GetHostAddress: Trả về tất cả IP của một trạm

- GetHostEntry: Giải đáp tên hoặc địa chỉ truyền vào và trả về ñối tượng IphostEntry

- GetHostName: Lấy về tên của máy tính cục bộ

NameSpace System.Net.Sockets

Một số lớp hay dùng: TcpClient, UdpClient, TcpListener,

Socket, NetworkStream, … Socket(AddressFamily af, SocketType st, ProtocolType pt)

SocketT

communication

Protocol

2.2.2: Sử dụng các lớp hổ trợ từ lớp socket

2.2.2.1 Lớp TCPClient

Trang 13

Các thành phần của lớp TcpClient

Phương thức khởi tạo

Constructor Method

Tc

p Cli e n t ( ) Tạo một đối tượng TcpClient Chưa đặt thông số gì.

Tc

p Cli e n t

(I

PE n d P o i n t )

Tạo một TcpClient và gắn cho nó một EndPoint cục bộ (Gán địa chỉ máy cục bộ và số hiệu cổng để sử dụng trao ñổi thông tin về sau)

Tc

p Cli e n t

( R e m o t e H o s t : S t r i n g ,

In

t 3 2 )

Tạo một đối tượng TcpClient và kết nối ñến một máy có địa chỉ và số hiệu cổng được truyền vào RemoteHost có thể là ñịa chỉ IP chuẩn hoặc tên máy

Một số thuộc tính

Name Description

A

va il a b l e Cho biết số byte ñã nhận về từ mạng và có sẵn để đọc.

C

li e n t Trả về Socket ứng với TCPClient hiện hành.

C

on n e c t e d Trạng thái cho biết đã kết nối được đến Server hay chưa ?

Một số phương thưc

Name Description

Trang 14

l o se Giải phóng ñối tượng TcpClient nhưng

không ñóng kết nối

Connect (RemoteHost,

Port)

Kết nối ñến một máy TCP khác có Tên và số hiệu cổng

2.2.2.2 Lớp TCPListener

Phương thức khởi tạo

Constructor method

Name Description

TcpListener (Port:

I n t 3 2 ) Tạo một TcpListener và lắng nghe tại cổng chỉ ñịnh. TcpListener( I P E n d P o i n t )

Tạo một TcpListener với giá trị Endpoint truyền vào

TcpListener( I P A d d r ess,

I n t 3 2 ) Tạo một TcpListener và lắng nghe các kết nối ñến tại địa chỉ IP và cổng chỉ định.

Các phương thức khác

Name Description

A

cc e p t S o c k et Chấp nhận một yêu cầu kết nối ñang chờ

Trang 15

cc e p t T c p Cli e n t Chấp nhận một yêu cầu kết nối đang chờ (Ứng dụng sẽ

dừng tại lệnh này cho ñến khi nào có một kết nối đến) Pe

n d in g Cho biết liệu có kết nối nào đang chờ đợi không ? (True =

có)

S

t a r t Bắt ñầu lắng nghe các yêu cầu kết nối

S

to p Dừng việc nghe

2.2 Trò chơi dò mìn:

2.3.1 Luật chơi

Minisweeper (của Windows) có phần giao diện chính là một bảng các ô vuông xếp liền nhau tạo thành một hình chữ nhật có chiều rộng và dài tối thiểu là 9 ô (đơn vị

là ô vuông) và số mìn tối thiểu là 10

Trong bảng này sẽ có các ô được đặt mìn ngẫu nhiên và nhiệm vụ của người chơi là mở tất cả các ô không có mìn bằng cách click chuột trái vào các ô đó, khi chỉ còn các ô có mìn còn lại thì kết thúc màn chơi

2.3.2 Các trạng thái của một ô

Tùy theo quá trình khởi tạo và thao tác của người dùng mà các ô trong bảng có thể có một hoặc vài trạng thái trong các trạng thái sau:

- Có mìn: được đặt ngẫu nhiên lúc khởi tạo

- Đã mở: Khi người dùng nhấn chuột trái vào ô

- Được cắm cờ: Khi người dùng nhấn phải vào ô

- Được đánh dấu (?): Khi nhấn phải vào ô đã được “cắm cờ”

- Bình thường: không có tất cả các trạng thái trên

2.3.4 Các trường hợp khi mở một ô

Khi mở một ô X nào đó, có 3 trường hợp có thể xảy ra:

1 X có mìn: hiện tất cả mìn trong bảng ra và ‘game over’

Trang 16

2 X không có mìn nhưng 8 ô xung quanh có mìn: hiện số mìn xung quanh vào X.

3 X không có mìn và xung quanh cũng không có mìn: mở lần lượt các ô xung quanh X cho đến khi gặp các trường hợp 1 và 2

2.3.5 Cắm cờ và đánh dấu

Minisweeper cho phép bạn đánh dấu các ô nghi ngờ có mìn bằng cách “cắm cờ” và

“đánh dấu” Khi bạn “cắm cờ”, tức là bạn xác định rằng ô đó có mìn và ô đó được hiển thị là một lá cờ Bạn không thể mở ô đó bằng chuột trái được Bạn chỉ có thể hủy bỏ trạng thái “cắm cờ” bằng cách click chuột phải, tùy theo thiết lập mà ô đó sẽ chuyển sang trại thái “đánh dấu” hoặc “bình thường”

Khi bạn “đánh dấu”, tức là bạn đoán rằng ô đó có thể có mìn nhưng không chắc chắn

Trang 17

CHƯƠNG 3: CHƯƠNG TRÌNH DEMO

Ngày đăng: 07/06/2014, 16:31

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w