Tải bản đầy đủ (.pdf) (66 trang)

Nghiên cứu lập trình SocketThread xây dựng ứng dụng chơi Caro trong mạng LAN

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 (1.84 MB, 66 trang )

LỜI CẢM ƠN
Trƣớc tiên, em xin gửi lời cảm ơn sâu sắc tới thầy Lê Trung Hiếu (Giảng viên
Khoa Công Nghệ Thông Tin, Trƣờng Đại Học Duy Tân). Thầy đã tận tình chỉ dẫn
cho em từ những bƣớc đi đầu tiên đến khi hồn thành đề tài này. Thầy ln giúp em
giải quyết vấn đề trong những lúc khó khăn. Ở thầy em học đƣợc không chỉ là sự
hiểu biết mà còn là phong cách làm việc.
Em xin gửi lời cảm ơn tới tất cả các thầy, cô giáo trong khoa Công Nghệ
Thông Tin – Trƣờng Đại Học Duy Tân đã nhiệt tình giảng dạy cho chúng em những
tri thức của kỷ nguyên công nghệ.
Cảm ơn những ngƣời bạn của tôi, những ngƣời đã giúp đỡ tôi rất nhiều trong
học tập, trong cuộc sống và hồn thành khóa luận này.
Cuối cùng, con xin gửi lời cảm ơn đến bố, mẹ và gia đình. Bố mẹ ln là chỗ
dựa tinh thần vững chắc cho con.

Đà Nẵng, Ngày 20 Tháng 04 Năm 2013


LỜI CAM ĐOAN
Tôi xin cam đoan:
a. Những nội dung trong khóa luận này là do tơi thực hiện dưới sự
hướng dẫn trực tiếp của thầy Lê Trung Hiếu –Giảng viên khoa Công Nghệ
Thông Tin, Đại Học Duy Tân.
b. Mọi tham khảo dùng trong khóa luận đều được trích dẫn rõ ràng và trung
thực tên tác giả,tên cơng trình,thời gian, địa điểm công bố.
c. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin
chịu hồn tồn trách nhiệm.
Tác giả

Ngơ Cơng Danh



MỤC LỤC
Lời cảm ơn
Lời cam đoan
MỞ ĐẦU
CHƢƠNG 1:
1.1

LẬP TRÌNH AI .......................................................................................... 6

1.1.1

Lý thuyết trò chơi ................................................................................ 6

1.1.1.1

Khái niệm...................................................................................... 6

1.1.1.2

Biểu diễn trị chơi .......................................................................... 7

1.1.1.3

Các loại trị chơi ............................................................................ 8

1.1.2

Trí tuệ nhân tạo .................................................................................. 10

1.1.2.1


Trí tuệ nhân tạo là gì ? ................................................................. 10

1.1.2.2

Các trƣờng phái trí tuệ nhân tạo .................................................. 11

1.1.2.3

Các thành phần cơ bản của TTNT ............................................... 12

1.1.3
1.2

KIẾN THỨC ỨNG DỤNG ........................................................... 6

Giải thuật MinMax ............................................................................ 13

LẬP TRÌNH MẠNG ................................................................................ 15

1.2.1

Tổng quan về mạng LAN ................................................................... 15

1.2.2

Địa chỉ mạng và cổng giao tiếp (IPAddress & Port) ........................... 17

1.2.2.1


IPAddress .................................................................................... 17

1.2.2.2

Port ............................................................................................. 18

1.2.3

Kỹ thuật .NET Remoting ................................................................... 20

1.2.3.1

.NET Remoting là gì? .................................................................. 20

1.2.3.2

.NET Remoting và Web Services ................................................ 20

1.2.3.3

Channels ..................................................................................... 21

1.2.3.4

Tạo chƣơng trình Server để host Remotable Object ..................... 22


1.2.3.5
1.2.4


Tạo chƣơng trình client để sử dụng Remote Object ..................... 23

Lập trình Thread và MultiThread ....................................................... 24

1.2.4.1

Thread là gì? ............................................................................... 24

1.2.4.2

Namespace System.Threading ..................................................... 25

1.2.4.3

Đồng bộ hóa (Synchorization) ..................................................... 29

1.2.4.4

Delegate ...................................................................................... 30

1.2.4.5

Deadlock ..................................................................................... 31

CHƢƠNG 2:

PHÂN TÍCH ............................................................................... 33

2.1


SƠ LƢỢC VỀ TRỊ CHƠI CARO ........................................................... 33

2.2

MÔ TẢ VẤN ĐỀ ..................................................................................... 34

2.3

YÊU CẦU ĐẶT RA................................................................................. 35

2.4

PHÂN TÍCH CHƢƠNG TRÌNH .............................................................. 35

2.4.1

Chƣơng trình Caro cho máy tính ........................................................ 35

2.4.1.1

Mơ tả........................................................................................... 35

2.4.1.2

Áp dụng luật chơi ........................................................................ 36

2.4.1.3

Xử lý các ngoại lệ phát sinh trong game ...................................... 36


2.4.2

Thuật toán MinMax - Ứng dụng ........................................................ 37

2.4.2.1

Thuật toán MinMax..................................................................... 37

2.4.2.2

Xây dựng chiến thuật cho AI ....................................................... 42

2.4.3

Phân tích thành phầ n xƣ̉ lý ................................................................. 44

2.4.3.1

Use case ...................................................................................... 44

2.4.3.2

Chơi với AI ................................................................................. 46

2.4.3.3

Chơi qua ma ̣ng LAN ................................................................... 46

CHƢƠNG 3:


XÂY DỰNG ỨNG DỤNG ......................................................... 49

3.1

THIẾT KẾ GIAO DIỆN ........................................................................... 49


3.1.1

Màn hình chiń h .................................................................................. 49

3.1.2

Màn hình chơi đơn ............................................................................. 50

3.1.3

Màn hình ta ̣o Host ............................................................................. 50

3.1.4

Màn hình Login ................................................................................. 51

3.1.5

Màn hình chơi LAN ........................................................................... 52

3.1.6

Màn hình thi đấ u giƣ̃a 2 đớ i thủ ......................................................... 52


3.1.7

Màn hình chat with ............................................................................ 53

3.2

VIẾT MÃ ................................................................................................. 53

KẾT LUẬN
TÀI LIỆU THAM KHẢO

Danh mục hình vẽ:
Hình 1.1: .NET Remoting Overview ..................................................................... 20
Hình 1.2: Remotable Object Sample ...................................................................... 22
Hình 1.3: Sample Server host Remotable Object ................................................... 23
Hình 1.4: Sample Client Application ..................................................................... 24
Hình 1.5: Chu kỳ hoạt động của Thread................................................................. 25
Hình 1.6: Cơ chế hoạt động của MultiThread: ....................................................... 29
Hình 1.7: Ví dụ về Delegate .................................................................................. 31
Hình 2.1: Cây trị chơi ........................................................................................... 38
Hình 2.2: Use Case ................................................................................................ 44
Hình 2.3: Mơ hình xử lý chơi đơn.......................................................................... 46
Hình 2.4: Mơ hình ta ̣o Host ................................................................................... 47
Hình 2.5: Mơ hình xử lý Login .............................................................................. 48
Hình 3.1: Màn hình chính ...................................................................................... 49


Hình 3.2: Màn hình chơi đơn ................................................................................. 50
Hình 3.3: Màn hình Host ....................................................................................... 50

Hình 3.4: User đăng nhâ ̣p vào Host ....................................................................... 51
Hình 3.5: Màn hình Login ..................................................................................... 51
Hình 3.6: Màn hình chơi LAN ............................................................................... 52
Hình 3.7: Màn hình thi đấ u ................................................................................... 52
Hình 3.8: Màn hình Chat with ............................................................................... 53
Hình 3.9: Hàm xử lý ván đấu mới .......................................................................... 54
Hình 3.10: Hàm tìm nƣớc đi kế tiếp ....................................................................... 55
Hình 3.11: Hàm tạo Host ....................................................................................... 55
Hình 3.12: Hàm tạo kết nối tới Server ................................................................... 56

Danh mục bảng:
Bảng 1.1: Các thành phần của lớp IpAddress ......................................................... 18
Bảng 1.2: Một số lớp của namespace System.Threading........................................ 25
Bảng 1.3: Các thành phần static của lớp Thread .................................................... 27
Bảng 1.4: Các thành viên cấp đối tƣợng của lớp Thread ........................................ 27

Danh mục các từ viết tắt:
AI

Artificial Intelligence

Trí thơng minh nhân tạo

CPU

Central Processing Unit

Đơn vị xử lý trung tâm

DNS


Domain Name Service

Dịch vụ phân giải tên miền

FTP

File Transfer Protocol

Giao thức truyền tải tệp tin

GUI

Graphic User Interface

Giao diện đồ họa ngƣời dùng

HTTP

Hyper Text Transfer Protocol

Giao thức truyền tải siêu văn bản


IP

Internet Protocol

Giao thức liên mạng


LAN

Local Area Network

Mạng máy tính cục bộ

NIC

Network Interface Card

Card giao tiếp mạng

POP3

Post Office Protocol

Giao thức bƣu điện

SMTP

Simple Mail Transfer Protocol

Giao thức truyền tải thƣ tín đơn giản

SOAP

Simple Object Access Protocol

Giao thức truy cập đối tƣợng đơn
giản


TCP

Transmission Control Protocol

Giao thức điều khiển truyền vận

UDP

User Datagram Protocol

Giao thức truyền tải gói ngƣời dùng.

XML

Extensible Markup Language

Ngơn ngữ đánh dấu mở rộng


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

MỞ ĐẦU
1. TỔNG QUAN
Bạn muốn thƣ giãn với một trị chơi có tính tƣơng tác cao! Bạn muốn
đánh bại các đồng nghiệp, bạn bè trong cuộc tranh tài về trí thơng minh! Vâng,
chính game Caro mà tôi sắp giới thiệu sau đây sẽ cho bạn tất cả.
Game mang lại cho bạn các trải nghiệm thú vị khi có thể chọn chế độ
chơi với máy, điều chỉnh giao diện hay tùy chỉnh chiến thuật của máy. Chắc
chắn sẽ không dễ dàng cho những “amateur” muốn đánh bại đƣợc ngƣời máy

của Game.
Hoặc một chế độ khác cũng không kém hấp dẫn đó chính là chức năng
thách đấu với ngƣời chơi khác thông qua mạng LAN. Đây hứa hẹn sẽ là nơi
mang lại cho bạn những phút giây thƣ giãn thú vị bên bạn bè, đồng nghiệp.
Ngoài chức năng thách đấu trong game Caro, hệ thống sẽ hỗ trợ những ngƣời
chơi có thể chat với nhau thơng qua kênh chat riêng. Ngƣời chơi có thể gửi
những thơng điệp cho ngƣời khác đã đăng nhập vào Host nhƣ một phần mềm
chat trên mạng LAN.
Để làm đƣợc tất cả những yêu cầu trên, chúng ta cần phải nghiên cứu
về hai lĩnh vực: Trí tuệ nhân tạo-Lý thuyết trị chơi và lập trình mạng. Cụ thể
chúng ta sẽ áp dụng Giải thuật MinMax để xây dựng ngƣời máy cho game, và
kỹ năng lập trình Socket để xây dựng chế độ chơi LAN.
Nhƣ chúng ta đã biết, mạng LAN tuy đã ra đời từ rất lâu nhƣng ngày
nay nó vẫn chiếm một vai trò rất quan trọng. Đƣợc ứng dụng rộng rãi trong
các hộ gia đình, trƣờng học, cơng ty, …, với mục đích trao đổi dữ liệu giữa
các máy trạm trong quy mơ của mạng. Việc lập trình cho mạng LAN cũng đã
xuất hiện từ khi nó ra đời, các ngơn ngữ hỗ trợ lập trình mạng cũng đa dạng
nhƣ Java, .NET… Và trong khóa luận này, chúng ta sẽ nghiên cứu kỹ thuật
.NET Remoting của .NET để lập trình cho chế độ chơi LAN.
Trí tuệ nhân tạo hay trí thơng minh nhân tạo (tiếng Anh: artificial
intelligence hay machine intelligence, thƣờng đƣợc viết tắt là AI) là trí tuệ
Ngơ Cơng Danh_2481

Trang -1


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

đƣợc biểu diễn bởi bất cứ một hệ thống nhân tạo nào. Thuật ngữ này thƣờng
dùng để nói đến các máy tính có mục đích khơng nhất định và ngành khoa

học nghiên cứu về các lý thuyết và ứng dụng của trí tuệ nhân tạo.
Tuy rằng trí thơng minh nhân tạo khơng có nghĩa rộng nhƣ là trí thơng
minh trong khoa học viễn tƣởng, nhƣng nó là một trong những ngành trọng
yếu của tin học. Trí thông minh nhân tạo liên quan đến cách cƣ xử, sự học hỏi
và khả năng thích ứng thơng minh của máy móc. Các ví dụ ứng dụng bao gồm
các tác vụ điều khiển, lập kế hoạch và lập lịch (scheduling), khả năng trả lời
các câu hỏi về chẩn đoán bệnh, trả lời khách hàng về các sản phẩm của một
công ty, nhận dạng chữ viết tay, nhận dạng tiếng nói và khn mặt. Bởi vậy,
trí thơng minh nhân tạo đã trở thành một mơn học, với mục đích chính là cung
cấp lời giải cho các vấn đề của cuộc sống thực tế. Ngày nay, các hệ thống
nhân tạo đƣợc dùng thƣờng xuyên trong kinh tế, y dƣợc, các ngành kỹ thuật và
quân sự, cũng nhƣ trong các phần mềm máy tính thơng dụng trong gia đình
và trị chơi điện tử.
Và qua đó, ta sẽ xây dựng một AI cho game Caro dựa trên nền tảng các
giải thuật của trí tuệ nhân tạo. Cụ thể, giải thuật MinMax sẽ đƣợc sử dụng để
xây dựng AI có thể suy nghĩ và phán đoán nhƣ một bộ não con ngƣời trong
chế độ chơi giữa ngƣời với máy.
2. LÝ DO CHỌN ĐỀ TÀI
Đây là một đề tài khá hay và khơng dễ dàng, địi hỏi một kỹ năng tƣ
duy, phân tích cao. Các kiến thức ứng dụng vào chƣơng trình tuy là cũ về công
nghệ nhƣng lại rất mới đối với các sinh viên. Những vấn đề chỉ đƣợc truyền
đạt trên cơ sở lý thuyết, chƣa đƣợc nhiều sinh viên ứng dụng vào thực tế.
Thơng qua khóa luận này, sẽ củng cố lại các kiến thức về lập trình
mạng cũng nhƣ lập trình đồ họa trong .NET, tổng hợp và phát triển các công
nghệ đã dùng trong đồ án chuyên ngành. Tìm hiểu nâng cao một số công nghệ
khác để khai thác hiệu quả hơn về lập trình phần mềm.

Ngơ Cơng Danh_2481

Trang -2



Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

Là cơ sở để lập trình AI cho máy tính, áp dụng các thuật tốn trong
mơn học “Trí tuệ nhân tạo” vào thực tiễn. Từ đó có thể mơ phỏng một cách
đơn giản nhất về ứng dụng của ngành này trong đời sống con ngƣời. Trao dồi
thêm kỹ năng về lập trình game cho windows, là nền tảng để phát triển các
ứng dụng về game cho các hệ máy khác nhƣ Mobile hay Tablet.
3. MỤC ĐÍCH ĐỀ TÀI
 Xây dựng đƣợc Game Caro đáp ứng đƣợc yêu cầu về chơi giữa ngƣời
với máy hoặc giữa ngƣời với ngƣời.
 Ôn tập lại các kiến thức về lập trình mạng, lập trình đồ họa trong .NET.
Áp dụng các công nghệ đã nghiên cứu trong đồ án chuyên ngành cũng
nhƣ một số công nghệ khác để hỗ trợ cho việc lập trình mạng.
 Nghiên cứu các ứng dụng của trí tuệ nhân tạo vào thực tiễn đời sống.
Qua đó, xây dựng nên đƣợc một “bộ não” nhân tạo mô phỏng một cách
rõ ràng nhất về ứng dụng của ngành này.
 Rút ra đƣợc những bài học kinh nghiệm cho bản thân về việc lập trình
cũng nhƣ xây dựng ứng dụng liên quan đến trí tuệ nhân tạo.
4. HƢỚNG GIẢI QUYẾT
4.1 Lý thuyết trị chơi - Trí tuệ nhân tạo
Nền tảng lý thuyết trò chơi
- Nắm vững các khái niệm về lý thuyết trò chơi, lịch sử phát triển cũng
nhƣ các ứng dụng của lý thuyết trò chơi vào cuộc sống.
- Áp dụng lý thuyết trị chơi vào trí tuệ nhân tạo. Cụ thể là để giải quyết
cho bài toán ngƣời chơi với máy. Đƣa ra những giải pháp, giải thuật của
trí tuệ nhân tạo vào việc xây dựng một máy tính biết suy nghĩ.
Xây dựng AI
- Từ nền tảng lý thuyết trị chơi và trí tuệ nhân tạo, áp dụng giải thuật

MinMax vào việc xây dựng AI cho bài toán ngƣời chơi với máy.
- Yêu cầu máy phải biết phân tích, chọn nƣớc đi tối ƣu, và phải biết cách
chiến thắng ngƣời chơi.
- Các bƣớc áp dụng giải thuật MinMax vào việc xây dựng AI:
Ngô Công Danh_2481

Trang -3


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

 Định giá bàn cờ bằng cách xây dựng một hàm đánh giá.
 Dựa vào giá trị các ô trong bàn cờ, chọn nƣớc đi tối ƣu nhất hoặc
nƣớc đi có thể dẫn đến chiến thắng.
4.2 Lập trình mạng
Ứng dụng đồ án chuyên ngành
Áp dụng các khái niệm, kiến thức đã sử dụng trong đồ án chuyên ngành
nhƣ: Tổng quan về mạng LAN, khái niệm IP, Port, DNS…
Về lập trình mạng cần nắm vững: Tạo chƣơng trình phía Server thực
hiện việc chờ Client kết nối, xử lý các yêu cầu phía Client và trả kết quả cho
Client. Chƣơng trình phía Client với giao diện dễ sử dụng cho mọi đối tƣợng
thao tác, thiết kế các yêu cầu của Client trực quan, thực hiện việc kết nối với
Server thông qua các giao tiếp mạng.
Các bƣớc cần phải thực hiện đƣợc:
- Tạo kết nối giữa Client và Server.
- Truyền và nhận dữ liệu.
- Đóng kết nối.
Sử dụng đối tƣợng Thread/MultiThread để xử lý các yêu cầu bên phía
Server. Nắm vững các khái niệm và cách sử dụng của Thread, Delegate,… các
vấn đề xuất hiện nhƣ Deadlock.

Các kỹ năng lập trình nâng cao
Sử dụng kỹ thuật .NET Remoting để xây dựng phần chơi giữa ngƣời
với ngƣời. Phía Server đảm nhận việc tạo Host cho Object Remoting và nhận
request từ Client, sử dụng TCPChannel để tạo kênh giao tiếp giữa Server và
Client.
Khai thác tối đa thƣ viện GDI+ của C#.NET, phục vụ cho việc lập trình
đồ họa.

Ngơ Cơng Danh_2481

Trang -4


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

5. ĐỐI TƢỢNG VÀ PHẠM VI NGHIÊN CỨU
5.1 Đối tƣợng nghiên cứu
Nền tảng lý thuyết trò chơi, ứng dụng của lý thuyết trị chơi vào trí tuệ
nhân tạo. Áp dụng giải thuật MinMax vào việc lập trình AI cho game Caro,
xây dựng một AI có khả năng phân tích, chọn nƣớc đi tối ƣu nhất để có thể
chiến thắng ngƣời chơi.
Tìm hiểu đƣợc cơ chế hoạt động trong mạng LAN, cách lập trình
Socket và Thread, sử dụng kỹ thuật .NET Remoting trong .NET Framework để
xây dựng chức năng chơi giữa ngƣời với ngƣời trong game Caro.
5.2 Phạm vi nghiên cứu
Lâ ̣p triǹ h cho máy có khả năng tƣ duy

, chọn nƣớc đi tối ƣu nhất để

chiế n thắ ng ngƣời chơi.

Đối với việc chơi qua mạng LAN , phải tạo Server để các Client kết nố i.
Gửi đƣợc các nƣớc đi của đối thủ qua lại cho nhau và xác định đối thủ chiến
thắng. Trong quá triǹ h chơi ngƣời chơi có thể trò chuyê ̣n thông qua cƣ̉a sổ chat
bên ca ̣nh.

Ngô Công Danh_2481

Trang -5


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

CHƢƠNG 1: KIẾN THỨC ỨNG DỤNG
1.1 LẬP TRÌNH AI
1.1.1

Lý thuyết trị chơi

1.1.1.1 Khái niệm
Lý thuyết trị chơi là một nhánh của Toán học ứng dụng. Ngành này
nghiên cứu các tình huống chiến thuật trong đó các đối thủ lựa chọn các hành
động khác nhau để cố gắng làm tối đa kết quả nhận đƣợc. Ban đầu đƣợc phát
triển nhƣ là một công cụ để nghiên cứu hành vi kinh tế học, ngày nay lý thuyết
trò chơi đƣợc sử dụng trong nhiều ngành khoa học, từ Sinh Học tới Triết Học.
Lý thuyết trị chơi đã có sự phát triển lớn từ khi John von Neumann là ngƣời
đầu tiên hình thức hóa nó trong thời kỳ trƣớc và trong Chiến Tranh Lạnh, chủ
yếu do áp dụng của nó trong chiến lƣợc quân sự, nổi tiếng nhất là khái niệm
đảm bảo phá hủy lẫn nhau (mutual assured destruction). Bắt đầu từ những năm
1970, Lý thuyết trò chơi bắt đầu đƣợc áp dụng cho nghiên cứu về hành vi động
vật, trong đó có sự phát triển của các lồi qua chọn lọc tự nhiên. Do các trò

chơi hay nhƣ Song đề tù nhân (prisoner's dilemma), trong đó lợi ích cá nhân
làm hại cho tất cả mọi ngƣời, Lý thuyết trò chơi đã bắt đầu đƣợc dùng trong
Chính trị học, Đạo đức học và Triết Học. Cuối cùng, Lý thuyết trò chơi gần
đây đã thu hút đƣợc sự chú ý của các nhà Khoa học máy tính do ứng dụng của
nó trong Trí tuệ nhân tạo và Điều khiển học.
Bên cạnh các mối quan tâm có tính chất hàm lâm, lý thuyết trò chơi đã
nhận đƣợc sự chú ý trong văn hóa đại chúng. John Nash, một nhà lý thuyết trị
chơi, ngƣời đã nhận đƣợc giải thƣởng Nobel, đã là chủ đề trong cuốn hồi ký
năm 1998 của tác giả Sylvia Nasar và trong bộ phim Một tâm hồn đẹp (A
Beautiful Mind) năm 2001. Một số trị chơi truyền hình (game show) đã sử
dụng các tính huống của lý thuyết trị chơi, trong đó có Friend or Foe? và
Survivor.
Tuy tƣơng tự với Lý thuyết quyết định, nhƣng Lý thuyết trò chơi nghiên
cứu các quyết định đƣợc đƣa ra trong một môi trƣờng trong đó các đối thủ

Ngơ Cơng Danh_2481

Trang -6


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

tƣơng tác với nhau. Nói cách khác, Lý thuyết trò chơi nghiên cứu cách lựa
chọn hành vi tối ƣu khi chi phí và lợi ích của mỗi lựa chọn là không cố định
mà phụ thuộc vào lựa chọn của các cá nhân khác.
1.1.1.2 Biểu diễn trò chơi
Dạng chuẩn tắc
Trò chơi chuẩn tắc (hoặc dạng chiến lƣợc (strategic form)) là một ma
trận cho biết thông tin về các đấu thủ, chiến lƣợc, và cơ chế thƣởng phạt (xem
ví dụ bên dƣới). Trong ví dụ, có hai đấu thủ, một ngƣời chọn hàng, ngƣời kia

chọn cột. Mỗi đấu thủ có hai chiến lƣợc, mỗi chiến lƣợc đƣợc biểu diễn bởi
một ô đƣợc xác định bởi số hiệu hàng và số hiệu cột của nó. Mức thƣởng phạt
đƣợc ghi trong ơ đó. Giá trị thứ nhất là mức thƣởng phạt cho đấu thủ chơi theo
hàng (trong ví dụ là Đấu thủ 1); Giá trị thứ hai là mức thƣởng phạt cho đấu thủ
chơi theo cột (trong ví dụ là Đấu thủ 2). Giả sử Đấu thủ 1 chơi hàng trên và
Đấu thủ 2 chơi cột trái. Khi đó, Đấu thủ 1 nhận 4 điểm và Đấu thủ 2 nhận 3
điểm.
Khi một trò chơi đƣợc biểu diễn bằng dạng chuẩn tắc, ngƣời ta coi rằng
mỗi đấu thủ hành động một cách đồng thời, hoặc ít nhất khơng biết về hành
động của ngƣời kia. Nếu các đấu thủ có thơng tin về lựa chọn của các đấu thủ
khác, trò chơi thƣờng đƣợc biểu diễn bằng dạng mở rộng.
Ví dụ:

Đấu thủ 1 chọn

Đấu thủ 2 chọn cột trái

Đấu thủ 2 chọn cột phải

4,3

-1,-1

0,0

3,4

hang trên
Đấu thủ 1 chọn
hàng dƣới


Dạng mở rộng
Các trò chơi dạng mở rộng cố gắng mơ tả các trị chơi có thứ tự quan
trọng. Ở đây, các trị chơi đƣợc biểu diễn bằng cây (nhƣ trong hình bên dƣới).
Ngơ Cơng Danh_2481

Trang -7


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

Mỗi đỉnh (hoặc nút) biểu diễn một điểm mà ngƣời chơi có thể lựa chọn. Ngƣời
chơi đƣợc chỉ rõ bằng một số ghi cạnh đỉnh. Các đoạn thẳng đi ra từ đỉnh đó
biểu diễn các hành động có thể cho ngƣời chơi đó. Mức thƣởng phạt đƣợc ghi
rõ tại đáy cây.
Trong trị chơi trong hình, có hai ngƣời chơi. Đấu thủ 1 đi trƣớc và chọn
F hoặc U. Đấu thủ 2 nhìn thấy nƣớc đi của Đấu thủ 1 và chọn A hoặc R. Giả
sử Đấu thủ 1 chọn U và sau đó Đấu thủ 2 chọn A. Khi đó, Đấu thủ 1 đƣợc 8
điểm và Đấu thủ 2 đƣợc 2 điểm.
Các trò chơi mở rộng cịn có thể mơ tả các trị chơi đi-đồng-thời. Hoặc
có một đƣờng chấm chấm hoặc một đƣờng tròn vẽ quanh hai đỉnh khác nhau
để biểu diễn rằng chúng đều thuộc cùng một tập hợp thông tin (nghĩa là, ngƣời
chơi không biết họ đang ở điểm nào).
Ví dụ:

1.1.1.3 Các loại trị chơi
Trò chơi đối xứng và bất đối xứng
Một trò chơi đối xứng là một trò chơi mà phần lợi cho việc chơi một
chiến thuật nào đó chỉ phụ thuộc vào các chiến thuật đƣợc sử dụng, chứ không
phụ thuộc vào ngƣời nào đang chơi. Nếu nhƣ tính danh của những ngƣời chơi

có thể thay đổi mà khơng làm thay đổi phần lợi đối với chiến thuật chơi, thì
một trị chơi là đối xứng. Nhiều trị chơi 2×2 thƣờng đƣợc nghiên cứu là đối
xứng. Những biểu diễn chuẩn của trò chơi con gà, song đề tù nhân, đi săn nai
là những trị chơi đối xứng.

Ngơ Cơng Danh_2481

Trang -8


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

Trị chơi có tổng bằng khơng và trị chơi có tổng khác khơng
Trong trị chơi tổng bằng không, với mọi tổ hợp của các chiến lƣợc
chơi, tổng điểm của tất cả các ngƣời chơi trong ván chơi ln bằng 0. Nói một
cách khơng chính thức, đấu thủ này hƣởng lợi trên thiệt hại của các đấu thủ
khác. Một ví dụ là trị Poker, trong đó ngƣời này thắng số điểm bằng đúng số
điểm mà ngƣời kia thua. Các loại cờ cổ điển nhƣ cờ vây, cờ vua và cờ tƣớng
cũng là các trò chơi tổng bằng khơng Nhiều trị chơi mà các nhà lý thuyết trị
chơi nghiên cứu, trong đó có song đề tù nhân nổi tiếng, là các trị chơi tổng
khác khơng, do có một số kết cục có tổng kết quả lớn hơn hoặc nhỏ hơn
khơng. Nói một cách khơng chính thức, trong các trị chơi tổng khác khơng,
một thu hoạch của đấu thủ này không nhất thiết tƣơng ứng với một thiệt hại
của một đấu thủ khác. Có thể biến đổi một trị chơi bất lỳ thành một trị chơi
tổng bằng khơng bằng cách bổ sung một đấu thủ "bù nhìn" sao cho các thiệt
hại của đấu thủ này bù lại tổng thu hoạch của các đấu thủ khác.
Trò chơi đồng thời và trò chơi tuần tự
Trong các trò chơi đồng thời (simultaneous game), cả hai đấu thủ thực
hiện các nƣớc đi một cách đồng thời, hoặc nếu khơng thì đấu thủ này sẽ khơng
biết về các hành động trƣớc đó của các đối thủ khác (và nhƣ vậy cũng tạo

"hiệu ứng" đồng thời). Trong các trò chơi tuần tự (sequential game), ngƣời đi
sau có biết một số (nhƣng khơng nhất thiết tồn bộ) thông tin về các nƣớc đi
trƣớc.
Biểu diễn dạng chuẩn tắc đƣợc dùng để biểu diễn các trò chơi đồng
thời, còn Biểu diễn dạng mở rộng đƣợc dùng cho các trị chơi tuần tự.
Trị chơi có thơng tin hồn hảo và trị chơi có thơng tin khơng hồn
hảo
Các trị chơi thơng tin hồn hảo (games of perfect information) lập
thành một tập con quan trọng của các trò chơi tuần tự. Một trị chơi đƣợc gọi là
có thơng tin hồn hảo nếu mọi đấu thủ biết tất cả các nƣớc đi mà tất cả các đấu
thủ khác đã thực hiện. Do vậy chỉ có các trị chơi tuần tự mới có thể là các trị

Ngơ Cơng Danh_2481

Trang -9


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

chơi thơng tin hồn hảo. Hầu hết các trò chơi đƣợc nghiên cứu trong lý thuyết
trò chơi là các trị chơi thơng tin khơng hồn hảo, tuy một số trò chơi hay nhƣ
cờ vây, cờ vua lại là trị chơi thơng tin hồn hảo.
Trị chơi dài vơ tận
Bởi các lý do hiển nhiên, các trị chơi đƣợc nghiên cứu bởi các kinh tế
gia và những ngƣời chơi trong thế giới thực nhìn chung là kết thúc trị chơi
trong hữu hạn các bƣớc đi. Các nhà tốn học lý thuyết khơng bị cản trở bởi
điều đó, và lý thuyết gia về tập hợp đặc biệt nghiên cứu về các trị chơi kết
thúc sau vơ hạn các bƣớc đi, bởi ngƣời thắng (hay là phần lợi) là không biết
đƣợc cho đến sau khi các bƣớc đi đó đã hồn thành.
1.1.2


Trí tuệ nhân tạo

1.1.2.1 Trí tuệ nhân tạo là gì ?
Trí tuệ nhân tạo là lĩnh vực khoa học chuyên nghiên cứu các phƣơng
pháp chế tạo trí tuệ máy sao cho giống nhƣ trí tuệ con ngƣời.
Vài định nghĩa của trí tuệ nhân tạo điển hình là:
- Hệ thống mà biết suy nghĩ nhƣ con ngƣời.
- Hệ thống mà biết hành động nhƣ con ngƣời.
Để hệ thống mà biết suy nghĩ và hành động nhƣ con ngƣời thì hệ thống
đó phải đƣợc trang bị các cơng cụ nhƣ thính giác, tri thức, lý giải tự động, việc
học, thị giác và di chuyển giống nhƣ con ngƣời.
Thông thƣờng, cách giải quyết vấn đề của con ngƣời đƣợc thể hiện qua
bốn thao tác cơ bản đó là:
- Xác định tập hợp của các đích.
- Thu thập các sự kiện và luật suy diễn.
- Cơ chế tập trung.
- Bộ máy suy diễn.
Nhƣ vậy, trí tuệ máy là các khả năng giải quyết vấn đề của máy đó, bao
gồm:
Ngơ Cơng Danh_2481

Trang -10


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

- Hành động giống nhƣ con ngƣời.
- Suy nghĩ giống nhƣ con ngƣời.
- Học giống nhƣ con ngƣời.

- Xử lý thông tin giống nhƣ con ngƣời.
- Hành động và suy nghĩ trên cơ sở logic và chính xác.
1.1.2.2 Các trường phái trí tuệ nhân tạo
Trí tuệ nhân tạo (TTNT) chia thành hai trƣờng phái tƣ duy: TTNT
truyền thống và Trí tuệ tính tốn.
TTNT truyền thống hầu nhƣ bao gồm các phƣơng pháp hiện đƣợc phân
loại là các phƣơng pháp học máy (machine learning), đặc trƣng bởi hệ hình
thức (formalism) và phân tích thống kê. Nó cịn đƣợc biết với các tên TTNT
biểu tƣợng, TTNT logic, TTNT ngăn nắp (neat AI) và TTNT cổ điển (Good
Old Fashioned Artificial Intelligence). Các phƣơng pháp gồm có:
- Hệ chuyên gia: áp dụng các khả năng suy luận để đạt tới một kết
luận. Một hệ chuyên gia có thể xử lý các lƣợng lớn thông tin đã
biết và đƣa ra các kết luận dựa trên các thơng tin đó. Clippy
chƣơng trình trợ giúp có hình cái kẹp giấy của Microsoft Office là
một ví dụ. Khi ngƣời dùng gõ phím, Clippy nhận ra các xu hƣớng
nhất định và đƣa ra các gợi ý.
- Lập luận theo tình huống.
- Mạng Bayes.
Trí tuệ tính tốn nghiên cứu việc học hoặc phát triển lặp (ví dụ: tinh
chỉnh tham số trong hệ thống, chẳng hạn hệ thống connectionist). Việc học
dựa trên dữ liệu kinh nghiệm và có quan hệ với Trí tuệ nhân tạo phi ký hiệu,
TTNT lộn xộn (scruffy AI) và tính tốn mềm (soft computing). Các phƣơng
pháp chính gồm có:
- Mạng neuron: các hệ thống mạnh về nhận dạng mẫu (pattern
recognition).

Ngô Công Danh_2481

Trang -11



Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

- Hệ mờ (Fuzzy system): các kỹ thuật suy luận không chắc chắn, đã
đƣợc sử dụng rộng rãi trong các hệ thống công nghiệp hiện đại và
các hệ thống quản lý sản phẩm tiêu dùng.
- Tính tốn tiến hóa (Evolutionary computation): ứng dụng các khái
niệm sinh học nhƣ quần thể, biến dị và đấu tranh sinh tồn để sinh
các lời giải ngày càng tốt hơn cho bài toán. Các phƣơng pháp này
thƣờng đƣợc chia thành các thuật tốn tiến hóa (ví dụ thuật tốn
gien) và trí tuệ bầy đàn (swarm intelligence) (chẳng hạn hệ kiến).
- TTNT dựa hành vi (Behavior based AI): một phƣơng pháp môđun để xây dựng các hệ thống TTNT bằng tay.
Ngƣời ta đã nghiên cứu các hệ thống thông minh lai (hybrid intelligent
system), trong đó kết hợp hai trƣờng phái này. Các luật suy diễn của hệ chuyên
gia có thể đƣợc sinh bởi mạng nơ-ron hoặc các luật dẫn xuất (production rule)
từ việc học theo thống kê nhƣ trong kiến trúc ACT-R.
Các phƣơng pháp trí tuệ nhân tạo thƣờng đƣợc dùng trong các cơng
trình nghiên cứu khoa học nhận thức (cognitive science), một ngành cố gắng
tạo ra mơ hình nhận thức của con ngƣời (việc này khác với các nghiên cứu
TTNT, vì TTNT chỉ muốn tạo ra máy móc thực dụng, khơng phải tạo ra mơ
hình về hoạt động của bộ óc con ngƣời).
1.1.2.3 Các thành phần cơ bản của TTNT
Có hai thành phần cơ bản của trí tuệ nhân tạo đó là biểu diễn tri thức và
tìm kiếm tri thức trong miền biểu diễn. Tri thức của bài tóan có thể đƣợc phân
ra làm ba lọai tri thức cơ bản đó là tri thức mô tả, tri thức thủ tục và tri thức
điều khiển.
- Tri thức mô tả: là lọai tri thức mơ tả những gì mà đƣợc biết về bài
tóan. Lọai tri thức này bao gồm các sự kiện, các quan hệ và các
tính chất của bài tóan.
- Tri thức thủ tục: là lọai tri thức mô tả cách giải quyết bài tóan.

Lọai tri thức này bao gồm luật suy diễn hợp lệ,chiến lƣợc tìm kiếm
và giải thuật tìm kiếm.
Ngơ Công Danh_2481

Trang -12


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

- Tri thức điều khiển: là lọai tri thức đƣợc xem nhƣ là luật chủ chốt
điều khiển quá trình lý giải để dẫn đến kết luận.
Để biểu diễn tri thức của bài tóan nhờ các phƣơng pháp biểu diễn nhƣ:
- Phƣơng pháp biểu diễn nhờ luật.
- Phƣơng pháp biểu diễn nhờ mạng ngữ nghĩa.
- Phƣơng pháp biểu diễn nhờ Frame.
- Phƣơng pháp biểu diễn nhờ logic vị từ.
Sau khi tri thức của bài tóan đã đƣợc biểu diễn, kỹ thuật giải bài tóan
trong lĩnh vực trí tuệ nhân tạo là các phƣơng pháp tìm kiếm trong miền đặc
trƣng tri thức về bài tóan đó.
1.1.3

Giải thuật MinMax
Khái niệm
Minmax (còn gọi là minimax) là một phƣơng pháp trong lý thuyết

quyết định có mục đích là tối thiểu hóa (minimize) tổn thất vốn đƣợc dự tính
có thể là "tối đa" (maximize). Có thể hiểu ngƣợc lại là, nó nhằm tối đa hóa lợi
ích vốn đƣợc dự tính là tối thiểu (maximin). Nó bắt nguồn từ trị chơi có tổng
bằng khơng. Nó cũng đƣợc mở rộng cho nhiều trị chơi phức tạp hơn và giúp
đƣa ra các quyết định chung khi có sự hiện diện của sự khơng chắc chắn.

Một phiên bản của giải thuật áp dụng cho các trò chơi nhƣ tic-tac-toe,
khi mà mỗi ngƣời chơi có thể thắng, thua, hoặc hịa. Nếu ngƣời chơi A có thể
thắng trong một nƣớc đi, thì "nƣớc đi tốt nhất" chính là nƣớc đi để dẫn đến kết
quả thắng đó. Nếu ngƣời B biết rằng có một nƣớc đi mà dẫn đến tình huống
ngƣời A có thể thắng ngay ở nƣớc đi tiếp theo, trong khi nƣớc đi khác thì sẽ
dẫn đến tình huống mà ngƣời chơi A chỉ có thể, tốt nhất, là hịa thì nƣớc đi tốt
nhất của ngƣời B chính là nƣớc đi sau.
Ta sẽ nắm rõ, thế nào là một nƣớc đi "tốt nhất". Giải thuật Minimax
giúp tìm ra nƣớc đi tốt nhất, bằng cách đi ngƣợc từ cuối trị chơi trở về đầu.
Tại mỗi bƣớc, nó sẽ ƣớc định rằng ngƣời A đang cố gắng tối đa hóa cơ hội
thắng của A khi đến phiên anh ta, cịn ở nƣớc đi kế tiếp thì ngƣời chơi B cố
Ngô Công Danh_2481

Trang -13


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

gắng để tổi thiểu hóa cơ hội thắng của ngƣời A (nghĩa là tối đa hóa cơ hội
thắng của B).
Giải thuật MinMax với các nƣớc đi khác nhau
Một thuật toán minimax là một thuật toán đệ quy cho việc lựa chọn
bƣớc đi kế tiếp trong một trị chơi có hai ngƣời chơi. Một giá trị đƣợc gán cho
mỗi vị trí hay một trạng thái của trị chơi. Giá trị này đƣợc tính tốn bằng một
hàm tính giá trị vị trí và nó cho biết độ tốt nếu nhƣ một ngƣời chơi đạt đƣợc
đến đó. Ngƣời chơi sau đó đi một bƣớc làm tối đa giá trị tối thiểu của vị trí là
kết quả từ tập hợp những bƣớc đi có thể của đối thủ. Nếu đó là phiên A sẽ đi,
A sẽ cho một giá trị cho mỗi bƣớc đi hợp pháp của anh ta.
Một phƣơng pháp bố trí là gán cho một số vị trí thắng cho A nhƣ là +1
và cho B là −1. Điều này sẽ dẫn đến lý thuyết trò chơi tổ hợp đƣợc phát triển

bởi John Horton Conway.
Một cách khác là sử dụng một quy định rằng nếu nhƣ kết quả của một
bƣớc đi là một chiến thắng lập tức cho A nó đƣợc gán dƣơng vơ hạn và, nếu
nhƣ là một chiến thắng lập tức cho B, âm vô hạn. Giá trị cho A của bất kì nƣớc
đi nào khác là giá trị minimum của các giá trị kết quả từ mỗi bƣớc trả lời có
thể của B. (A đƣợc gọi là ngƣời chơi là cực đại và B gọi là ngƣời chơi làm cực
tiểu), do vậy đƣợc gọi là thuật toán minimax. Thuật toán trên sẽ gán một giá trị
dƣơng hay âm vơ hạn cho mỗi vị trí bởi vì giá trị của mỗi vị trí sẽ là giá trị của
một số vị trí thắng hay thua nào đó. Thơng thƣờng nhìn chung điều này chỉ có
thể xảy ra tại điểm cuối của những trò chơi phức tạp nhƣ cờ vua hay cờ vây,
bởi vì về mặt tính tốn ta khơng có khả năng tính xa đến mức kết thúc trò chơi,
trừ khi là trò chơi sắp kết thúc, và các vị trí khơng đi khác nhau đƣợc cho các
giá trị hữu hạn nhƣ là các đánh giá về mức độ tin tƣởng là chúng sẽ dẫn đến
chiến thắng cho ngƣời này hay ngƣời khác.
Điều này có thể đƣợc mở rộng nếu nhƣ chúng ta cung cấp một hàm
đánh giá heuristic đƣa ra các giá trị cho các vị trí trị chơi chƣa phải là cuối
cùng mà khơng xét tất cả mọi trƣờng hợp theo sau một chuỗi đầy đủ. Chúng ta
sau đó có thể giới hạn thuật tốn minimax để chỉ xét một số nào đó các nƣớc đi
Ngô Công Danh_2481

Trang -14


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

kế tiếp. Số này đƣợc gọi là "số bƣớc kế tiếp", đo bằng "ply". Ví dụ, "Deep
Blue" nhìn trƣớc 12 ply.
Thuật tốn này có thể đƣợc nghĩ nhƣ là khám phá các node của một cây
trò chơi. Số cắt xén hiệu quả của một cây là trung bình của số các con của mỗi
nốt (i.e., trung bình của các nƣớc đi hợp pháp trong một vị trí). Số lƣợng các

nodes đƣợc khám phá thƣờng là tăng theo hàm mũ với số lƣợng ply (nó sẽ nhỏ
hơn hàm mũ nếu đánh giá các nƣớc đi bắt buộc hay là các bƣớc lặp lại). Số
lƣợng các nodes cần khám phá cho việc phân tích một trị chơi do đó gần bằng
số cắt xét nâng lên luỹ thừa số ply. Do vậy là khơng thể phân tích trị chơi ví
dụ nhƣ cờ vua một cách hồn tồn chỉ bằng thuật tốn minimax.
Sự trình diễn của thuật tốn minimax ngây thơ có thể đƣợc cải tiến đáng
kể, mà khơng ảnh hƣởng đến kết quả, bằng cách sử dụng cắt xén alpha-beta.
Các phƣơng pháp cắt xén heuristic khác cũng có thể đƣợc sử dụng, nhƣng
không phải tất cả chúng bảo đảm sẽ cho kết quả giống nhau nhƣ là tìm kiếm
khơng cắt xén.
1.2 LẬP TRÌNH MẠNG
1.2.1

Tổng quan về mạng LAN
LAN là viết tắt của Local Area Network (Mạng cục bộ) Các máy tính

cá nhân và các máy tính khác trong phạm vi một khu vực hạn chế đƣợc nối với
nhau bằng các dây cáp chất lƣợng tốt sao cho những ngƣời sử dụng có thể trao
đổi thơng tin, dùng chung các thiết bị ngoại vi, và sử dụng các chƣơng trình
cũng nhƣ các dữ liệu đã đƣợc lƣu trữ trong một máy tính dành riêng gọi là máy
dịch vụ tệp (file).
Mạng LAN có nhiều quy mơ và mức độ phức tạp khác nhau, nó có thể
chỉ liên kết vài ba máy tính cá nhân và dùng chung một thiết bị ngoại vi nào đó
(máy in lazer, máy scanner…). Các hệ thống phức tạp hơn thì có máy tính
trung tâm (Máy chủ Server) cho phép những ngƣời dùng trao đổi thông tin với
nhau và thâm nhập vào các cơ sở dữ liệu dùng chung.

Ngô Công Danh_2481

Trang -15



Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

Hình 1.1 Mạng LAN kết nối nhiều thiết bị

Phạm vi ứng dụng của mạng LAN: mạng LAN thƣờng đƣợc sử dụng
để kết nối các máy tính trong gia đình, trong phịng Game, phịng NET, trong
một tồ nhà của cơ quan, trƣờng học. Cự ly của mạng LAN giới hạn trong
phạm vi có bán kính khoảng 100m. Các máy tính có cự ly xa hơn thơng
thƣờng ngƣời ta sử dụng mạng Internet để trao đổi thông tin.
Một mạng LAN tối thiểu cần có máy chủ (server), các thiết bị ghép nối
(Repeater, Hub, Switch, Bridge), máy tính con (client), card mạng (Network
Interface Card – NIC) và dây cáp (cable) để kết nối các máy tính lại với nhau.
Trong thời đại của hệ điều hành MS-DOS, máy chủ mạng LAN thƣờng sử
dụng phần mềm Novell NetWare, tuy nhiên điều này đã trở nên lỗi thời hơn
sau khi Windows NT và Windows for Workgroups xuất hiện. Ngày nay hầu
hết máy chủ sử dụng hệ điều hành Windows, và tốc độ mạng LAN có thể lên
đến 10 Mbps, 100 Mbps hay thậm chí là 1 Gbps.

Ngơ Cơng Danh_2481

Trang -16


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN

1.2.2

Địa chỉ mạng và cổng giao tiếp (IPAddress & Port)


1.2.2.1 IPAddress
Trên Internet mỗi một trạm (có thể là máy tính, máy in, thiết bị …) đều
có một định danh duy nhất, định danh đó thƣờng đƣợc gọi là một địa chỉ
(Address). Địa chỉ trên Internet là một tập hợp gồm 4 con số có giá trị từ 0-255
và cách nhau bởi dấu chấm (gọi là Octet).
Để thể hiện địa chỉ này, ngƣời ta có thể viết dƣới các dạng sau:
- Tên: Ví dụ May01, Server, ….
- Địa chỉ IP nhƣng đặt trong một xâu: "192.168.1.1", "127.0.0.1"
- Đặt trong một mảng 4 byte, mỗi byte chứa một số từ 0-255.
Ví dụ để biểu diễn địa chỉ 192.168.1.1 với khai báo “byte[] DiaChi =
new byte[4];”, ta có thể viết:
DiaChi[0]= 192;
DiaChi[1]=168;
DiaChi[2]=1;
DiaChi[3]=1;
Để thuận tiện cho việc kết nối giữa các Client với Server, ngƣời ta
thƣờng đổi xâu địa chỉ IP thành một số kiểu long.
Ví dụ: Đổi địa chỉ 192.168.1.2 ra số, ta tính nhƣ sau:
2 * 256 ^ 3 + 1* 256 ^ 2 + 168 * 256 ^ 1 + 192 * 256 ^ 0
Trong .NET, IPAddress là một lớp dùng để mô tả địa chỉ này. Đây là
lớp rất cơ bản đƣợc sử dụng khi chúng ta thao tác (truyền) vào các lớp nhƣ
IPEndpoint, UDP, TCP, Socket …

Ngô Công Danh_2481

Trang -17


Nghiên cứu lập trình Socket, Thread - Viết ứng dụng chơi caro trong mạng LAN


Bảng 1.1: Các thành phần của lớp IpAddress
Thành viên Static

Mô tả
Cung cấp một địa chỉ IP (thƣờng là 0.0.0.0) để

Any

chỉ ra rằng Server phải lắng nghe các hoạt động
của Client trên tất cả các Card mạng (sử dụng
khi xây dựng Server). Thuộc tính này chỉ đọc.
Broadcast

Cung cấp một địa chỉ IP quảng bá (Broadcast,
thƣờng là 255.255.255.255), ở dạng số long.

Loopback

Trả về một địa chỉ IP lặp (IP Loopback, ví dụ
127.0.0.1).

AddressFamily

Trả về họ địa chỉ của địa chỉ IP hiện hành. Nếu
địa chỉ ở dạng IPv4 thì kết quả là Internetwork,
và InternetworkV6 nếu là địa chỉ IPv6.

Phƣơng thức


Mô tả

IPAddress(Int64)

Tạo địa chỉ IP từ một số long.

IPAddress(Byte[])

Tạo địa chỉ IP từ một mảng Byte.

GetAddressByte ()

Chuyển địa chỉ thành mảng Byte.

HostToNetworkOrder()

Đảo thứ tự Byte của một số cho đúng với thứ tự
Byte trong địa chỉ IPAddress.

IsLoopback()

Cho biết địa chỉ có phải là địa chỉ lặp hay
khơng?

1.2.2.2 Port
Khái niệm:
Port là một số nằm trong khoảng 1…65535 dùng để phân biệt giữa 2
ứng dụng mạng với nhau và gắn với địa chỉ IP và Socket.

Ngô Công Danh_2481


Trang -18


×