Tải bản đầy đủ (.doc) (18 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (216.75 KB, 18 trang )

Xây dựng trò chơi dò mìn qua mạng
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
Trần Quốc Nhật Trung – 12TLT.CNTT Trang 1
Xây dựng trò chơi dò mìn qua mạng
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.
Trần Quốc Nhật Trung – 12TLT.CNTT Trang 2
Xây dựng trò chơi dò mìn qua mạng
MỤC LỤC
1
LỜI MỞ ĐẦU 2
MỤC LỤC 3


CHƯƠNG 1: TỔNG QUAN VỀ LẬP TRÌNH MẠNG 1
CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH 4
CHƯƠNG 3: CHƯƠNG TRÌNH DEMO 12
KẾT LUẬN 13
TÀI LIỆU THAM KHẢO 14

Trần Quốc Nhật Trung – 12TLT.CNTT Trang 3
Xây dựng trò chơi dò mìn qua mạng
DANH SÁCH HÌNH ẢNH
Hình 1.1 Mô hình tham chiếu và giao thức TCP/IP 1
Hình 2.1: Socket hổ trợ TCP 6
Trần Quốc Nhật Trung – 12TLT.CNTT Trang 4
Xây dựng trò chơi dò mìn qua mạng
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
Lê Xuân Phú – 12TLT.CNTT Trang 1
Xây dựng trò chơi dò mìn qua mạng
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:

Lê Xuân Phú – 12TLT.CNTT Trang 2
Xây dựng trò chơi dò mìn qua mạng
- 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.
Lê Xuân Phú – 12TLT.CNTT Trang 3
Xây dựng trò chơi dò mìn qua mạng
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
Lê Xuân Phú – 12TLT.CNTT Trang 4
Xây dựng trò chơi dò mìn qua mạng
Ở 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.
Lê Xuân Phú – 12TLT.CNTT Trang 5
Xây dựng trò chơi dò mìn qua mạng
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à
S
y
stem.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)
Lê Xuân Phú – 12TLT.CNTT Trang 6
Xây dựng trò chơi dò mìn qua mạng
- IsLoopback: Cho biết ñịa chỉ có phải ñịa chỉ lặp không
- 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)
So
c
k
e
t
T
y
p
e
P
r
o
t
o
c
o
l
t
y
p
e
D

e
s
c
r
i
p
t
i
o
n
Dgram Udp Connectionless communication
Stream Tcp Connection-oriented
communication
Raw Icmp Internet Control Message
Protocol
Raw Raw Plain IP packet communication
2.2.2: Sử dụng các lớp hổ trợ từ lớp socket
Lê Xuân Phú – 12TLT.CNTT Trang 7
Xây dựng trò chơi dò mìn qua mạng
2.2.2.1 Lớp
TC
P
Clie
nt
Các thành phần của lớp TcpClient
Phương thức khởi tạo
Constructor
M
e
t

h
o
d
N
a
m
e Desc
r
i
p
t
io
n
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
N
a
m
e
D
e
s
c
r
i
p
t
i
on
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
Lê Xuân Phú – 12TLT.CNTT Trang 8
Xây dựng trò chơi dò mìn qua mạng
N
a
m
e
D
e
s
c
r
i
p
t
i
on
C 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
TC
P
Liste
ne
r
Phương thức khởi tạo
Constructor
m
e
t
h
o
d
N
a
m
e Desc
r
i
p
t
io
n
TcpListener (Port:

I
n

t


3

2



)

Tạo một
TcpListener
và lắng nghe tại cổng chỉ ñịnh.
T
c
p
L
is
t
e
n
e
r
(

I

P

E


n

d

P
o

i
n

t



)
Tạo một
TcpListener
với giá trị Endpoint truyền vào.
T
c
p
L
is
t
e
n
e
r
(


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
N
a
m
e Desc
r
i
p
t
io
n
Lê Xuân Phú – 12TLT.CNTT Trang 9
Xây dựng trò chơi dò mìn qua mạng
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ờ.
A

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:
Lê Xuân Phú – 12TLT.CNTT Trang 10
Xây dựng trò chơi dò mìn qua mạng
1. X có mìn: hiện tất cả mìn trong bảng ra và ‘game over’.
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.
Lê Xuân Phú – 12TLT.CNTT Trang 11
Xây dựng trò chơi dò mìn qua mạng
CHƯƠNG 3: CHƯƠNG TRÌNH DEMO
Lê Xuân Phú – 12TLT.CNTT Trang 12
Xây dựng trò chơi dò mìn qua mạng
KẾT LUẬN
Lê Xuân Phú – 12TLT.CNTT Trang 13
Xây dựng trò chơi dò mìn qua mạng
TÀI LIỆU THAM KHẢO
Lê Xuân Phú – 12TLT.CNTT Trang 14

×