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

ĐỀ TÀI: PHÁT TRIỂN HỆ THỐNG TRÒ CHƠI TRÊN ĐIỆN THOẠI DI ĐỘNG DỰA TRÊN NỀN TẢNG CÔNG NGHỆ J2ME, KẾT HỢP XÂY DỰNG WEBSITE

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 (8.42 MB, 163 trang )

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA

KHOA CÔNG NGHỆ THÔNG TIN
Tel. (84-511) 3736 949, Fax. (84-511) 842 771
Website: itf.dut.edu.vn, E-mail:

LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI:
PHÁT TRIỂN HỆ THỐNG TRÒ CHƠI TRÊN ĐIỆN THOẠI
DI ĐỘNG DỰA TRÊN NỀN TẢNG CÔNG NGHỆ J2ME,
KẾT HỢP XÂY DỰNG WEBSITE
Mã số:

06T3-014
06T3-021
06T3-040
06T2-026

Ngày bảo vệ: 15-16/06/2011
SINH VIÊN : Bùi Vũ Nhật Hoàng
06T3
Phan Linh
06T3
Lê Khắc Thọ
06T3
Nguyễn Thị Hồng Phúc 06T2
CBHD :


ThS. Lâm Tùng Giang
ĐÀ NẴNG, 06/2011


LỜI CẢM ƠN
Lời đầu tiên chúng em muốn nói, chúng em xin chân thành cảm ơn các
thầy cô trong khoa Công nghệ thông tin cũng như các thầy cô giảng dạy
trong trường Đại học Bách khoa, Đại học Đà Nẵng đã truyền đạt những
kiến thức quý báu chochúng em trong những năm học vừa qua.
Đặc biệt, chúng em xin chân thành cảm ơn anh Lâm Tùng Giang- Phó
Giám đốc Trung tâm tin học Văn phòng UBND Thành phố Đà Nẵng đã
tận tình hướng dẫn, động viên và giúp đỡ em trong suốt thời gian thực
hiện đề tài.
Cuối cùng chúng em xin cảm ơn các bạn trong khoa Công Nghệ Thông
Tin, những người đã giúp đỡ, chia sẽ những kiến thức, kinh nghiệm, tài
liệu…trong suốt quá trình nghiên cứu thực hiện đề tài.
Một lần nữa, chúng em xin chân thành cảm ơn!
Đà Nẵng, ngày 5 tháng 6 năm 2011
Nhóm sinh viên,
Bùi Vũ Nhật Hoàng
Phan Linh
Lê Khắc Thọ
Nguyễn Thị Hồng Phúc

06T3
06T3
06T3
06T2



LỜI CAM ĐOAN
Chúng em xin cam đoan :
1.
Những nội dung trong luận văn này là do chúng em thực hiện
dưới sự hướng dẫn trực tiếp của anh Lâm Tùng Giang.
2.
Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ
ràng tên tác giả, tên công trình, thời gian, địa điểm công bố.
3.
Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay
gian trá, chúng em xin chịu hoàn toàn trách nhiệm.
Nhóm sinh viên,
Bùi Vũ Nhật Hoàng
Phan Linh
Lê Khắc Thọ
Nguyễn Thị Hồng Phúc

06T3
06T3
06T3
06T2


NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

Đà Nẵng, ngày … tháng … năm 2011
Cán bộ hướng dẫn

Th.s. Lâm Tùng Giang


NHẬN XÉT CỦA HỘI ĐỒNG BẢO VỆ
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

Đà Nẵng, ngày … tháng … năm 2011
Hội Đồng bảo vệ


MỤC LỤC
MỞ ĐẦU

1

I. Giới thiệu đề tài
2
II.
Mục đích, ý nghĩa của đề tài
II.1. Mục đích
2
II.2. Ý nghĩa
3
III.
Phương pháp triển khai đề tài
III.1. Các bước thực hiện 3
III.2. Dự kiến kết quả đạt được

2


3
4

CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN 5
I. Mô hình Client/Server6
II.
Giao thức điều khiển truyền dữ liệu TCP 8
III.
Giới thiệu về Socket
10
IV.
Tìm hiểu về Thread và MultiThread
12
IV.1.
Tuyến đoạn 12
IV.2.
Đa tuyến đoạn(MultiThread)
14
IV.3.
Thiết lập các tuyến đoạn 15
IV.4.
Thứ tự ưu tiên tuyến đoạn 18
IV.5.
Cơ chế đồng bộ hóa
19
V.
Giới thiệu chung về ASP.NET
21
V.1. Tìm hiểu về .Net Platform 21
V.2. Tìm hiểu về .Net Framework 22

V.3. Tìm hiểu về ASP.Net 26
V.4. Quá trình xử lý tập tin ASPX 27
V.5. Phân loại tập tin trong ASP.Net
28
V.6. Những ưu điểm của ASP.Net 28
VI.
SQL Server 2005 30
VI.1.
Giới thiệu chung về SQL Server 30
VI.2.
Các ấn bản của SQL Server
30
VI.3.
Các thành phần của SQL Server 31
VI.4.
Mô hình hoạt động của SQL server trên mạng máy tính 33
VII. Máy ảo java cho các điện thoại di động 36
VIII.
Lập trình java cho Mobile
37
VIII.1. Ngôn ngữ java
37
VIII.2. So sánh công nghệ Java và Microsoft.Net 38
VIII.3. Giới thiệu về J2ME 39
IX.
J2ME game API 46
IX.1.
Layer class 46
IX.2.
Sprite Class 47

IX.3.
TiledLayer class 48
IX.4.
LayerManager class
49
X.
Giới thiệu về thuật toán
50
X.1. Dạng trò chơi 50
X.2. Cây trò chơi 51


X.3.
X.4.
X.5.
X.6.

Vét cạn
52
Chiến lược tìm kiếm trong trò chơi
Thủ tục Minimax[1] 53
Thủ tục AlphaBeta 59

53

PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
I.

62


Sơ đồ tổng quan
63
I.1.
Xác định các tác nhân:
64
I.2.
Xác định các ca sử dụng:
64
I.3.
Sơ đồ Use Case của hệ thống 68
II.
Client
68
II.1. Đặc tả yêu cầu người sử dụng68
II.2. Phân tích cấu trúc chương trình
69
II.3. Xác định các tác nhân(actors) 77
II.4. Xây dựng sơ đồ Use Case
78
II.5. Xây dựng sơ đồ tuần tự
86
III.
Server
88
III.1. Mô hình tổng thể các khối chức năng của server
88
III.2. Xây dựng sơ đồ tuần tự
94
III.3. Xây dựng sơ đồ Lớp 100
IV.

Website
101
IV.1.
Đặc tả tổng quan hệ thống website 101
IV.2.
Xây dựng sơ đồ Use Case của hệ thống website 103
IV.3.
Xây dựng sơ đồ tuần tự
106
IV.4.
Xây dựng sơ đồ hoạt động 112
IV.5.
Sơ đồ Lớp 116
IV.6.
Thiết kế cơ sở dữ liệu
119

TRIỂN KHAI CHƯƠNG TRÌNH

126

I. Cài đặt và cấu hình 126
II.
Kết quả thực hiện 126
II.1. Client 126
II.2. Server 136
II.3. Website
139

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

I. Kết quả đạt được
II.
Nhận xét 148
II.1. Ưu điểm
II.2. Nhược điểm
III.
Hướng phát triển

148
148
149
150


DANH MỤC HÌNH ẢNH
Hình 1: Mô hình client-server....................................................................................................7
Hình 2: Kết nối 2 chiều..............................................................................................................9
Hình 3: Một phiên kết nối socket.............................................................................................10
Hình 4: Mối quan hệ giữa một thread và một chương trình.....................................................12
Hình 5: Chu trình sống của một tuyến đoạn............................................................................13
Hình 6. Các loại hình dịch vụ...................................................................................................21
Hình 7: Kiến trúc .Net Framework..........................................................................................22
Hình 8: Hệ thống tên miền (Namespace).................................................................................25
Hình 9: Quá trình xử lý tập tin ASPX......................................................................................27
Hình 10: Cơ chế hoạt động của ASP.Net.................................................................................29
Hình 11: Các thành phần của SQL Server................................................................................31
Hình 12: SQL Server tools.......................................................................................................32
Hình 13: Mô hình chung SQL Server trên mạng.....................................................................33
Hình 14: Mô hình SQL trên Desktop.......................................................................................34
Hình 15: Mô hình Client/Server...............................................................................................34

Hình 16: Chi tiết mô hình Client/Server..................................................................................35
Hình 17: Mô hình kết nối ứng dụng trên mạng Internet..........................................................36
Hình 18: Biểu diễn tiến trình xây dựng ứng dụng MIDlet hoàn chỉnh và vai trò của KVM...37
Hình 19: Quá trính phát triển của Java....................................................................................38
Hình 20: So sánh Java và .Net.................................................................................................38
Hình 21: Kiến trúc của J2ME...................................................................................................39
Hình 22: Một số mẫu điện thoại...............................................................................................41
Hình 23: Ví dụ MIDLet............................................................................................................42
Hình 24: Chu kì sống của các ứng dụng MIDlet......................................................................43
Hình 25: Quản lý màn hình của ĐTDĐ...................................................................................44
Hình 26: Đồ họa mức cao........................................................................................................44
Hình 27: Canvas và Graphics...................................................................................................45
Hình 28: Sprite.........................................................................................................................47
Hình 29: TiledLayer.................................................................................................................49
Hình 30: Một số trò chơi đối kháng (trò chơi Minimax).........................................................51
Hình 31: Cây trò chơi...............................................................................................................52
Hình 32: Cây tìm kiếm và sự bùng nổ tổ hợp..........................................................................53
Hình 33: Ví dụ một phần cây trò chơi......................................................................................54
Hình 34: Thuật toán Minimax..................................................................................................54
Hình 35: Thuật toán AlphaBeta................................................................................................60
Hình 36: Sơ đồ tổng quan hệ thống..........................................................................................63
Hình 37: Sơ đồ Use Case hệ thống..........................................................................................68
Hình 38: Sơ đồ cấu trúc trò chơi..............................................................................................70
Hình 39: Giao diện GAPS flatform..........................................................................................71
Hình 40: GASP Log On...........................................................................................................72
Hình 41: Lobby Room.............................................................................................................72
Hình 42: Waiting Room...........................................................................................................73
Hình 43: In Game.....................................................................................................................73
Hình 44: quan hệ giữa các lớp..................................................................................................76



Hình 45: Sơ đồ Use Case mô tả hoạt động của Player trong chế độ Game Offline.................78
Hình 46: Sơ đồ Use Case hoạt động của Mobile trong chế độ chơi offline.............................79
Hình 47: Sơ đồ Use Case hoạt động của Board trong chế độ chơi offline...............................80
Hình 48: Sơ đồ Use Case tổng quan trong chế độ chơi offline................................................81
Hình 49: Sơ đồ Use Case mô tả hoạt động Player trong chế độ chơi online...........................82
Hình 50: Sơ đồ Use Case hoạt động của Server trong chế độ chơi online..............................83
Hình 51: Sơ đồ Use Case hoạt động của Board trong chế độ chơi online...............................84
Hình 52: Sơ đồ Use Case tổng quan trong chế độ chơi online................................................85
Hình 53: Sơ đồ biểu diễn quá trình làm việc của hệ thống trong chế độ chơi offline..............86
Hình 54: Sơ đồ biểu diễn quá trình làm việc của hệ thống chế độ chơi online........................87
Hình 55: Mô hình tổng thể phần server....................................................................................88
Hình 56: Sơ đồ quản lý đăng nhập của người chơi vào hệ thống............................................88
Hình 57: Sơ đồ quản lý ván cờ.................................................................................................89
Hình 58: Quản lý các session...................................................................................................89
Hình 59: Sơ đồ ca sử dụng tổng quát của hệ thống server.......................................................92
Hình 60: Use case quản lý đăng nhập người chơi....................................................................92
Hình 61: Use case quản lý việc xem ván cờ............................................................................93
Hình 62: BDTT xử lý các hành động ở màn hình đăng nhập hệ thống...................................94
Hình 63: BDTT xử lý các hành động lấy thông tin session từ hệ thống.................................95
Hình 64: BDTT xử lý hành động kết nối vào một session.......................................................96
Hình 65: BDTT xử lý việc chờ kết nối từ người chơi khác kết nối vào session......................97
Hình 66: BDTT xử lý trạng thái chơi game.............................................................................98
Hình 67: BDTT xử lý xem thông tin ván cờ trên web.............................................................99
Hình 68: Sơ đồ lớp Server......................................................................................................100
Hình 69: Mô hình tổng quan của hệ thống.............................................................................102
Hình 70: Sơ đồ Use case cho khách.......................................................................................103
Hình 71: Sơ đồ Use case cho người dùng..............................................................................104
Hình 72: Sơ đồ Use case cho Admin......................................................................................105
Hình 73: Sơ đồ tuần tự đăng nhập..........................................................................................106

Hình 74: Sơ đồ tuần tự download Game................................................................................107
Hình 75: Sơ đồ tuần tìm kiếm................................................................................................108
Hình 76: Sơ đồ tuần bình luận...............................................................................................109
Hình 77: Sơ đồ tuần quản lý chung........................................................................................110
Hình 78: Sơ đồ hoạt động đăng nhập.....................................................................................112
Hình 79: Sơ đồ hoạt động download......................................................................................113
Hình 80: Sơ đồ hoạt động bình luận.......................................................................................114
Hình 81: Sơ đồ hoạt động quản lý chung...............................................................................115
Hình 82: Sơ đồ lớp tầng BOL................................................................................................116
Hình 83:Sơ đồ lớp tầng DAL.................................................................................................117
Hình 84: Sơ đồ lớp tầng BAL................................................................................................118
Hình 85. Sơ đồ quan hệ thực thể............................................................................................125
Hình 86: Game start...............................................................................................................126
Hình 87: Chọn chế độ âm thanh.............................................................................................127
Hình 88: Menu chính.............................................................................................................127
Hình 89: Chế độ chơi offline..................................................................................................128
Hình 90: Play game................................................................................................................128
Hình 91: Login.......................................................................................................................129
Hình 92: Chọn phòng chơi.....................................................................................................129
Hình 93: Bắt đầu chơi game...................................................................................................130


Hình 94: Giao diện Game Start..............................................................................................131
Hình 95: Giao diện chọn chế độ chơi.....................................................................................132
Hình 96: Giao diện chọn độ khó............................................................................................133
Hình 97: Giao diện chơi game ở chế độ offline.....................................................................134
Hình 98: Giao diện help.........................................................................................................135
Hình 99: Server đáp ứng việc login và lấy thông tin session.................................................136
Hình 100: Server đáp ứng việc kết nối vào session...............................................................137
Hình 101: Server xử lý quá trình kết thúc game....................................................................138

Hình 102: Màn hình trang chủ...............................................................................................139
Hình 103: Màn hình trang đăng kí.........................................................................................140
Hình 104: Màn hình trang bình luận cho Game.....................................................................141
Hình 105: Mạn hình trang bầu chọn cho Game.....................................................................142
Hình 106: Xem danh sách Game theo danh mục...................................................................143
Hình 107: Màn hình trang liên hệ..........................................................................................143
Hình 108: Màn hình trang cập nhật thông tin cá nhân...........................................................144
Hình 109: Màn hình trang thay đổi mật khẩu........................................................................144
Hình 110: Màn hình trang quản lý Game...............................................................................145
Hình 111: Thêm một Game mới (bước 1)..............................................................................146
Hình 112: Thêm một Game mới (bước 2)..............................................................................147


DANH MỤC BẢNG
Bảng 1: Phân loại tập tin trong ASP.NET................................................................................28
Bảng 2: Xác định các tác nhân của hệ thống...........................................................................64
Bảng 3: Các ca sử dụng của Client..........................................................................................66
Bảng 4: Các ca sử dụng của Server..........................................................................................66
Bảng 5: Xác định các ca sử dụng Website...............................................................................67
Bảng 6: Xác định các tác nhân.................................................................................................90
Bảng 7: Xác định các ca sử dụng Server..................................................................................91
Bảng 8: Role...........................................................................................................................119
Bảng 9: Account.....................................................................................................................120
Bảng 10: Brand......................................................................................................................120
Bảng 11: Model......................................................................................................................121
Bảng 12: Categories...............................................................................................................121
Bảng 13: Comment................................................................................................................121
Bảng 14: Rating......................................................................................................................122
Bảng 15: Feedback.................................................................................................................122
Bảng 16: JoinGame................................................................................................................122

Bảng 17: Score.......................................................................................................................123
Bảng 18: Level.......................................................................................................................123
Bảng 19: SaveBoard...............................................................................................................123
Bảng 20: Games.....................................................................................................................124


MỞ ĐẦU

MỞ ĐẦU

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

1


Mở đầu

.I Giới thiệu đề tài
Ngày nay, sự phát triển về nhu cầu sở hữu các thiết bị kỹ thuật số mà trong đó thiết
bị di động có thị phần khá lớn. Sự đòi hỏi về mẫu mã, chất lượng dịch vụ mà đặc biệt
là tính năng của chiếc điện thoại, các phần mềm tiện ích đi kèm đã kéo theo sự phát
triển của các hệ điều hành để các nhà phát triển ứng dụng có thể thực hiện các ý tưởng
của mình. Các hệ điều hành phổ biến đó như: Windows Mobile, Linux Mobile,
Symbian.
Cùng với tốc độ phát triển đó là những tiến bộ vượt bậc về tốc độ xử lý. Nhờ đó lập
trình các ứng dụng cho loại thiết bị này tăng lên nhanh chóng, đặc biệt là các dịch vụ
giá trị gia tăng trên mạng di động như SMS, RSS, WAP và ứng dụng dịch vụ game.
Qua tìm hiểu về, chúng em thấy thị trường game di động tại Việt Nam đang phát triển
và có tiềm năng lớn. Vì vậy nhóm chúng em quyết định chọn đề tài “Phát triển hệ

thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ J2ME, kết
hợp xây dựng Website”.
Hệ thống được xây dựng với các thành phần sau:
Chương trình client chạy trên mobile bao gồm 2 trò chơi: cờ tướng và cờ Caro.
Với chương trình này người chơi có thể có thể chơi ở chế độ offline hay giao lưu học
hỏi ở những người chơi khác thông qua chế độ online được kết nối thông qua server.
-

Chương trình server game phục vụ cho phần chơi online, thực hiện các chức
năng quản lý việc đăng nhập của người chơi, quản lý kết nối vào các phòng chơi trên
server, quản lý việc trao đổi thông tin giữa 2 người chơi, quản lý ván cờ đã lưu trên hệ
thống.
-

Hệ thống website cho phép người chơi thực hiện các tác vụ : xem, tìm kiếm,
download, bình luận, bầu chọn cho Game, quản lý đăng nhập và đăng ký, quản lý
thông tin cá nhân, thay đổi hoặc khôi phục mật khấu, xem điểm của các trò chơi đã
từng tham gia. Đối với quản trị viên thì ngoài các chức năng của người dùng còn có
thể quản lý Game, upload Game, quản lý người dùng, quản lý các danh mục, quản lý
điểm của người chơi…
-

.II Mục đích, ý nghĩa của đề tài
.II.1.

Mục đích

Nhằm xây dựng một hệ thống trò chơi phục vụ cho đa số người dùng di động có
được những trò chơi nhỏ, trí tuệ để giải trí.
Xây dựng hệ thống game trên di động có thể chơi được ở chế độ offline và online

nhằm phục vụ được như cầu đa dạng của người dùng mà cụ thể ở đây là 2 game cờ
tướng và cờ Caro.

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

2


Mở đầu

Xây dựng website quản lý phục vụ người dùng download game phục vụ cho việc
quảng bá game, cung cấp thông tin cũng như cho phép người dùng download game về
máy.
Cố gắng phát triển ứng dụng có tính chất thực tiễn cao, có khả năng thu hút người
dùng nếu có cơ hội triển khai thực tế.

.II.2.

Ý nghĩa

Nhằm tạo ra những sản phẩm game trí tuệ phục vụ cho nhiều đối tượng người dùng
ở mọi lứa tuổi.
Thông qua phát triển hệ thống để đánh giá lại khả năng của bản thân và tổng kết
những kiến thức kĩ năng đã được học trong nhà trường trong những năm qua như kĩ
năng làm việc nhóm, kĩ năng lập trình. Đồng thời nghiên cứu tiếp thu thêm kiến thức
và kĩ năng mới : nghiên cứu thuật toán, nghiên cứu về lập trình, nghiên cứu công nghệ
mới …
Đặc biệt với chế độ online có thể tạo cơ hội giao lưu giữa những ngươi chơi game,
tạo ra một cộng đồng những người đam mê các trò chơi trí tuệ.


.III
.III.1.

Phương pháp triển khai đề tài
Các bước thực hiện

-

Tìm hiểu công nghệ sẽ được ứng dụng.

-

Xem xét tính khả thi của ứng dụng.

-

Xác định nội dung cần thực hiện đối với từng module (client, server, website).

-

Xác định thời gian thực hiện dự án.

-

Lập đề cương tổng thể để thực hiện dự án.

-

Lập đề cương chi tiết và xác định thời gian thực hiện đối với từng công việc cụ


thể.
Lập các tài liệu tham khảo (tài liệu phân tích nội dung trò chơi, bản thiết kế
giao diện trò chơi, use case … ).
-

Phân tích và thiết kế các module.

-

Code ứng dụng.

-

Tiến hành kiểm thử.

-

Triển khai dự án..

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

3


Mở đầu

.III.2.


Dự kiến kết quả đạt được

Xây dựng được hệ thống hoàn chỉnh bao gồm:
Client: Xây dựng 2 Game Cờ tướng và cờ Caro với các tính năng: chơi game ở
chế độ online và offline, lưu game, lưu điểm, tùy chỉnh cấp độ chơi, tiếp tục chơi
game đã lưu…
-

Server: Xây dựng thành công server đảm nhận việc quản lý đăng nhập, quản lý
các session và các ván cờ đã chơi.
-

Website: Xây dựng giao diện thân thiện dễ sử dụng, cung cấp thông tin về
Game cho người dùng, cho phép download, tìm kiếm, bình luận, bình chọn cho Game
tương ứng. Qua đó người dùng có thể tìm kiếm các Game hay và tương thích với điện
thoại của mình.
-

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

4


CHƯƠNG 1

CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2


5


.I Mô hình Client/Server
Mô hình được phổ biến nhất và được chấp nhận rộng rãi trong các hệ thống phân
tán là mô hình client/server. Trong mô hình này sẽ có một tập các tiến trình mà mỗi
tiến trình đóng vai trò như là một trình quản lý tài nguyên cho một tập hợp các tài
nguyên cho trước và một tập hợp các tiến trình client trong đó mỗi tiến trình thực
hiện một tác vụ nào đó cần truy xuất tới tài nguyên phần cứng hoặc phần mềm dùng
chung. Bản thân các trình quản lý tài nguyên cần phải truy xuất tới các tài nguyên
dùng chung được quản lý bởi một tiến trình khác, vì vậy một số tiến trình vừa là tiến
trình client vừa là tiến trình server. Các tiến trình phát ra các yêu cầu tới các server bất
kỳ khi nào chúng cần truy xuất tới một trong các tài nguyên của các server. Nếu yêu
cầu là đúng đắn thì server sẽ thực hiện hành động được yêu cầu và gửi một đáp ứng
trả lời tới tiến trình client.
Mô hình client/server cung cấp một cách tiếp cận tổng quát để chia sẻ tài nguyên
trong các hệ thống phân tán. Mô hình này có thể được cài đặt bằng rất nhiều môi
trường phần cứng và phần mềm khác nhau. Các máy tính được sử dụng để chạy các
tiến trình client/server có nhiều kiểu khác nhau và không cần thiết phải phân biệt giữa
chúng, cả tiến trình client và tiến trình server đều có thể chạy trên cùng một máy tính.
Một tiến trình server có thể sử dụng dịch vụ của một server khác.
Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ. Quá trình trao đổi
dữ liệu bao gồm:
-

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

-


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

-

Truyền đáp ứng cho client.

Mô hình truyền tin này liên quan đến việc truyền hai thông điệp và một dạng đồng
bộ hóa cụ thể giữa client và server. Tiến trình server phải nhận thức được thông điệp
được yêu cầu ở bước một ngay khi nó đến và hành động phát ra yêu cầu trong client
phải được tạm dừng (bị phong tỏa) và buộc tiến trình client ở trạng thái chờ cho tớ khi
nó nhận được đáp ứng do server gửi về ở bước ba.
Mô hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi (send)
và nhận (receive).

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

6


Phát triển hệ thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ j2me, kết
hợp xây dựng website

Client
Server

Request message

Wait


Reply Execution

Request message

Tiến trình đang xử

Tiến trình đang phong
tỏa

Hình 1: Mô hình client-server
Quá trình giao tiếp client và server có thể diễn ra theo một trong hai chế độ: bị
phong tỏa (blocked) và không bị phong tỏa (non-blocked).
Chế độ bị phong tỏa (blocked):
Trong chế độ bị phong tỏa, khi tiến trình client hoặc server phát ra lệnh gửi dữ liệu
(send), việc thực thi của tiến trình sẽ bị tạm ngừng cho tới khi tiến trình nhận phát ra
lệnh nhận dữ liệu (receive).
Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó (client hoặc server)
phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ liệu gửi tới thì việc thực thi
của tiến trình cũng sẽ bị tạm ngừng cho tới khi có dữ liệu gửi tới.
Chế độ không bị phong tỏa (non-blocked):
Trong chế độ này, khi tiến trình client hay server phát ra lệnh gửi dữ liệu thực sự,
việc thực thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có tiến
trình nào phát ra lệnh nhận dữ liệu đó hay không.
Tương tự cho trường hợp nhận dữ liệu, khi tiến trình phát ra lệnh nhận dữ liệu, nó
sẽ nhận dữ liệu hiện có, việc thực thi của tiến trình vẫn được tiến hành mà không quan
tâm đến việc có tiến trình nào phát ra lệnh gửi dữ liệu tiếp theo hay không.

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2


7


Phát triển hệ thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ j2me, kết
hợp xây dựng website

.II Giao thức điều khiển truyền dữ liệu TCP
Trong 2 giao thức ở Lớp giao vận (Transport Layer), TCP là giao thức được sử
dụng nhiều nhất. Đây là giao thức hướng kết nối (connection-oriented), có 5 đặc trưng
của dịch vụ chuyển phát đáng tin cậy:
Định hướng stream : Khi hai chương trình ứng dụng (các tiến trình của người
sử dụng) truyền những khối lượng lớn dữ liệu, chúng ta xem dữ liệu này là một chuỗi
các bit, được chia thành các octet 8 bit, mà chúng ta thường gọi là byte. Dịch vụ
chuyển phát stream tên máy đích chuyển đến nơi nhận một cách chính xác cùng một
chuỗi các octet mà máy gửi chuyển đi.
-

Kết nối máy ảo : Thực hiện việc truyền stream cũng tương tự như thực hiện
một cuộc gọi điện thoại. Trước khi việc truyền có thể bắt đầu, cả hai chương trình ứng
dụng gửi và chương trình ứng dụng nhận tương tác với hệ điều hành, thông báo về
mong muốn có được việc truyền stream. Về mặt khái niệm, một chương trình ứng
dụng sẽ thực hiện một "cuộc gọi" mà phải được đầu kia chấp nhận, tức thiết lập một
kết nối – hay mạch ảo - để truyền và nhận dữ liệu một cách chính xác.
-

Việc truyền có vùng đệm : Các chương trình ứng dụng gửi một dòng dữ liệu
qua mạch ảo bằng cách lặp lại việc chuyển các octet dữ liệu đến phần mềm giao thức.
Khi truyền dữ liệu, mỗi chương trình ứng dụng sử dụng bất kỳ kích thước đơn vị
truyền nào nó thấy thuận tiện, có thể chỉ bằng một octet. Tại đầu nhận, phần mềm giao
thức phát chuyển tự động dữ liệu theo đúng chính xác thứ tự mà chúng được gửi đi,

làm cho chúng sẵn sàng được sử dụng đối với chương trình ứng dụng nhận, ngay sau
khi chúng được nhận và kiểm tra. Phần mềm giao thức được tự do phân chia dòng dữ
liệu thành những gói dữ liệu độc lập với đơn vị mà chương trình ứng dụng truyền đi.
Để làm cho việc truyền hiệu quả hơn và tối thiểu giao thông trên mạng, các cài đặt
thường tập hợp cho đủ dữ liệu từ dòng dữ liệu để đặt vào datagram có độ lớn thích
hợp trước khi truyền nó qua Internet.
-

Stream không có cấu trúc : Một điều quan trọng là dịch vụ TCP stream không
xác định các dòng dữ liệu có cấu trúc. Lấy ví dụ, chương trình trả lương nhân viên,
không có cách nào để dịch vụ stream đánh dấu biên giới giữa các bản ghi nhân viên,
hay để xác định nơi dừng của dòng dữ liệu là dữ liệu nhân viên. Các chương trình ứng
dụng sử dụng dịch vụ stream phải hiểu nội dung stream và thống nhất với nhau định
dạng stream trước khi khởi động việc kết nối.
-

Kết nối 2 chiều : Các kết nối được cung cấp bởi dịch vụ TCP stream cho phép
truyền đồng thời từ cả hai chiều. Cách kết nối này được gọi là song công (full deplex).
Từ quan điểm của một tiến trình ứng dụng, một kết nối hai chiều bao gồm 2 dòng dữ
liệu độc lập “chạy” theo hai chiều ngược nhau, và không có tương tác hay va chạm.
Dịch vụ stream cho phép một tiến trình ứng dụng chấm dứt "dòng chảy" theo một
chiều trong khi dữ liệu vẫn tiếp tục "chạy" theo chiều kia, làm cho kết nối trở thành
một chiều (half duplex). Ưu điểm chính của kết nối hai chiều là phần mềm giao thức
cơ sở có thể gửi thông tin điều khiển cho một stream ngược trở về nguồn trong những
-

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

8



Phát triển hệ thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ j2me, kết
hợp xây dựng website

datagram đang chuyển tải dữ liệu theo chiều ngược lại. Điều này làm giảm bớt giao
thông trên mạng.
Host A

Host B

timeout

Seq=9
2,

8 byte
s data
= 100
ACK

X

loss
Seq=9
2

, 8 byt

es data


= 100
ACK

time

lost ACK scenario
Hình 2: Kết nối 2 chiều

Vào đầu mỗi phiên TCP, máy tính gửi và nhận dữ liệu thực hiện thủ tục bắt tay 3
bước. Mỗi bước sử dụng một segment chỉ có phần đầu TCP mà không có dữ liệu. Đầu
tiên, máy tính gửi dữ liệu gửi tới máy nhận dữ liệu một segment có các thông tin sau:
Cờ đồng bộ (đặt ở vùng Flag) được thiết lập về trạng thái bật (on), Sequence number
cho segment được gửi sau đó và giá trị của kích thước của vùng đệm dữ liệu (window
size) của nó. Kế tiếp, máy tính nhận dữ liệu sẽ hồi đáp bằng một segment với các
thông tin: cờ đồng bộ cũng ở trạng thái bật, sequence number thiết lập với giá trị của
segment nó dự định sẽ nhận từ máy tính gửi dữ liệu và kích thước vùng đệm dữ liệu.
Cuối cùng, máy tính gửi dữ liệu sẽ gửi một acknowledgemnet với sequence number
mà máy tính nhận dữ liệu đã dự tính ở bước thứ hai. Qua thủ tục này, 2 máy tính sẽ
sẵn sàng cho quá trình truyền và nhận dữ liệu. Trong thủ tục bắt tay 3 bước, mỗi máy
tính cũng điều khiển kích thước của vùng đệm gửi dữ liệu phù hợp với kích thước của
cửa vùng đệm nhận dữ liệu. TCP sẽ nhận dữ liệu từ lớp ứng dụng (Application Layrer)
ở trên nó, chia dữ liệu thành các segment và gắn cho mỗi segment phần đầu TCP. TCP
chỉ gửi đi các segment vừa với kích thước vùng đệm gửi dữ liệu của nó và khởi động
một bộ đếm (timer) cho segment được gửi. Nếu bộ đếm đáo hạn (time out) mà máy
tính nhận dữ liệu vẫn chưa trả lời xác nhận, máy tính gửi dữ liệu sẽ gửi lại segment.
Khi TCP nhận được acknowledgement cho segment đã gửi, só sẽ tiếp tục gửi các
segment đang chờ gửi. Sau khi tất cả dữ liệu đã được gửi đi và xác nhận, TCP đóng
phiên làm việc hiện thời.
Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3

Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

9


Phát triển hệ thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ j2me, kết
hợp xây dựng website

.III

Giới thiệu về Socket

Một socket là một điểm kết nối truyền thông (đầu cuối) mà bạn cần 1 tên (name) và
địa chỉ (address) trên mạng. Socket có thể sử dụng trên các hệ thống giống nhau hoặc
các hệ thống khác nhau trên các mạng khác nhau. Socket hữu dụng cho cả ứng dụng
độc lập và ứng dụng mạng. Socket cho phép bạn thay đổi thông tin giữa việc xử lý các
trên các máy giống nhau và hai bên đầu cuối trên một mạng và cho phép truy xuất một
cách dễ dàng tới các dữ liệu trung tâm.
Socket phần lớn được sử dụng cho việc truyền thông giữa client và server. Điển
hình là cấu hình server trên 1 máy và client trên 1 máy khác. Client kết nối tới server,
trao đổi thông tin và sau đó kết thúc việc truyền thông, chúng sẽ ngắt kết nối.
Một socket có một loạt các khả năng. Trong một kết nối kiểu client-to-server,
socket trên server sẽ đợi xử lý các yêu cầu từ một client. Để làm điều này, server đầu
tiên phải thiết lập một địa chỉ mà các client dựa vào đó để tìm server. Khi địa chỉ
server được thiết lập, server sẽ đợi cho các client gửi yêu cầu về 1 dịch vụ. Dữ liệu lúc
đó sẽ được trao đổi thông qua socket. Server thực hiện yêu cầu từ các client và gửi
phản hồi lại cho client.

Hình 3: Một phiên kết nối socket
Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3

Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

10


Phát triển hệ thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ j2me, kết
hợp xây dựng website

Bước 1: Hàm socket() tạo một điểm kết nối (endpoint – đầu cuối) cho việc kết nối
và trả lại một ký hiệu nhận diện socket tương ứng với điểm kết nối (endpoint).
Bước 2: Khi một ứng dụng có một ký hiệu nhận diện socket, nó có thể gán 1 tên
duy nhất cho socket. Server phải gán 1 tên để có thể truy xuất tới mạng.
Bước 3: Hàm listen() cho thấy sự sẵn sàng để chấp nhận yêu cầu kết nối từ phía
client.
Bước 4: Ứng dụng Client sử dụng hàm connect() trên một stream socket để thực
hiện kết nối tới server.
Bước 5: Ứng dụng server sử dụng hàm accept() để chấp nhận yêu cầu kết nối từ 1
client. Server phải thực hiện hàm bind() và listen() thành công trước khi nó có thể
thực hiện hàm accept().
Bươc 6: Khi một kết nối được thực hiện giữa Client và Server, chúng ta có thể dùng
một số hàm truyền dữ liệu Socket API. Các Client và Server có nhiều hàm truyền dữ
liệu để lựa chọn như send(), recv(), read(), write()...
Bước 7: Khi Server hoặc Client muốn ngừng việc truyền thông, nó thực hiện hàm
close() để để giải phóng tài nguyên mà hệ thống bỏ ra cho socket.

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

11



Phát triển hệ thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ j2me, kết
hợp xây dựng website

.IV
.IV.1.

Tìm hiểu về Thread và MultiThread
Tuyến đoạn
.IV.1.1. Khái niệm về tuyến đoạn

Nhiều người lập trình đều quen thuộc với việc viết những chương trình liên tục.
Các chương trình như: hiển thị "Hello Word", sắp xếp một danh sách các tên hoặc tính
toán một dãy các số nguyên tố. Đó là những chương trình tuần tự. Tức là mỗi chương
trình đều có bắt đầu rồi đến thực thi và cuối cùng là kết thúc.
Một tuyến đoạn thì tương tự như những chương trình tuần tự vừa mới được mô tả.
Một tuyến đoạn đơn cũng có một sự bắt đầu, trình tự, và phần cuối. Tuy nhiên, bản
thân một tuyến đoạn không phải là một chương trình, nó không thể tự ý chạy, nó chỉ
có thể chạy bên trong một chương trình.
a program
a thread

Hình 4: Mối quan hệ giữa một thread và một chương trình
Như vậy tuyến đoạn đơn là một dòng liên tục đơn điều khiển bên trong một chương
trình.
Những chương trình đơn tuyến đoạn chứa những câu lệnh mà thi hành trong một
tuần tự rất nhanh, nhưng chỉ một câu lệnh là thi hành tại một thời điểm. Khi một máy
tính chứa một CPU, nó chỉ có thể thi hành một chỉ lệnh máy tại một thời điểm. Khi
bạn sử dụng một máy tính với nhiều CPU, máy tính đó có thể thi hành nhiều chỉ dẫn
máy cùng lúc.


Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

12


Phát triển hệ thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ j2me, kết
hợp xây dựng website

.IV.1.2. Chu trình sống của một tuyến đoạn

Suspend()

Non Runnable

new
Thread

resume()
Sleep()
Start()

Waiting
yield()

Wait()

Runnable


Sleepin
g

Blocked

Notify()
Bị chặn bởi I/O
Kết thúc bởi I/O

Dead

Stop()

Hình 5: Chu trình sống của một tuyến đoạn

Một tuyến đoạn có thể ở một trong các trạng thái sau:
-

New: Khi một luồng mới được tạo ra với toán tử new() và sẵn sàng hoạt động.

Runnable: Trạng thái mà luồng đang chiếm CPU để thực hiện, khi bắt đầu thì
nó gọi hàm start(). Bộ lập lịch phân luồng của hệ điều hành sẽ quyết định luồng nào sẽ
được chuyển về trạng thái Runnable và hoạt động. Cũng cần lưu ý rằng ở một thời
điểm, một luồng ở trạng thái Runnable có thể hoặc không thể thực hiện.
-

Non runnable (blocked): Từ trạng thái runnable chuyển sang trạng thái ngừng
thực hiện (“bị chặn”) khi gọi một trong các hàm: sleep(), suspend(), wait(), hay bị
chặn lại ở Input/output.
-


Dead: Luồng chuyển sang trạng thái “chết” khi nó kết thúc hoạt động bình
thường, hoặc gặp phải ngoại lệ không thực hiện tiếp được. Trong trường hợp đặc biệt,
bạn có thể gọi hàm stop() để kết thúc (“giết chết”) một luồng.
-

Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2

13


Phát triển hệ thống trò chơi trên điện thoại di động dựa trên nền tảng công nghệ j2me, kết
hợp xây dựng website

.IV.2.

Đa tuyến đoạn(MultiThread)
.IV.2.1. Đa nhiệm(Multitasking)

Khả năng máy tính chạy cùng một lúc nhiều chương trình, như là trong khi xử lý
văn bản có thể nghe nhạc, đó là tính đa nhiệm.
Với tính đa nhiệm thì hệ điều hành quyết định khi nào thì chuyển bộ xử lý từ ứng
dụng này sang ứng dụng khác đang đợi nó. Hệ điều hành chuyển bộ xử lý mà không
cần chương trình ứng dụng cho phép.
Hệ điều hành bảo vệ mỗi quá trình với tất cả các quá trình khác, lỡ khi một chương
trình gặp sự cố, nó sẽ không làm hỏng toàn bộ máy tính.
.IV.2.2. Đa tuyến đoạn(multithreading)
Ngôn ngữ lập trình Java cho phép bạn bắt đầu hay khởi động nhiều tuyến đoạn mà
không có vấn đề gì liên quan đến bộ xử lý mà ban đang sử dụng. Nếu bạn sử dụng hệ

thống máy tính mà có nhiều hơn một CPU, nhiều tuyến đoạn có thể thi hành cùng lúc.
Nếu bạn sử dụng một máy tính với một bộ xử lý đơn, nhiều tuyến đoạn chia sẻ thời
gian của CPU. CPU cấp một lượng thời gian nhỏ cho một nhiệm vụ, và cấp lượng thời
gian nhỏ khác cho nhiệm vụ khác. CPU chưa bao giờ thực sự thực hiện hai nhiệm vụ
cùng lúc. Thay vào đó, nó thực hiện một chút nhiệm vụ này, sau đó nó lại thực hiện
một chút nhiệm vụ khác. CPU thực hiện quá nhanh đến nỗi mà mỗi một nhiệm vụ
đang thi hành dường như không bị ngắt quãng giữa chừng.
Như vậy: Đa tuyến đoạn là nhiều hơn một tuyến đoạn đang chạy trong sự song
song hoặc cùng lúc.
Bất cứ một chương trình ứng dụng nào cũng có ít nhất một tuyến đoạn, là Thread
đầu tiên của chương trình (hoặc là Thread chính). Chúng ta có thể bắt đầu hay thêm
vào cũng như kết thúc những Thread mới khi chúng ta cần, nhưng Thread chính thì
giữ tiến trình cùng lúc với chương trình ứng dụng đang chạy.
Trong chế độ đa tuyến đoạn:
Không có cơ chế bảo vệ giữa các tuyến đoạn. Mỗi tuyến đoạn trong Java có thể
chạy độc lập với tất cả tuyến đoạn khác trong chương trình đó, song cũng có thể giao
tiếp với các tuyến đoạn khác nếu cần, mọi tuyến đoạn đều chia sẻ chung tập hợp các
đối tượng và biến.
-

Hướng của một tuyến đoạn thông thường khác với hướng của những tuyến
đoạn khác. Ví dụ, giả sử có một tuyến đoạn thực hiện chỉ lệnh theo hướng "if " của
câu lệnh if-else, trong khi tuyến đoạn khác thi hành chỉ lệnh theo hướng " else".
-

Vậy làm sao JVM có thể theo dõi được sự thực thi của mỗi tuyến đoạn? JVM sẽ
cấp cho mỗi tuyến đoạn phương thức của nó- gọi ngăn xếp( call stack). Ngoài việc
Bùi Vũ Nhật Hoàng 06T3_ Lê Khắc Thọ 06T3
Phan Linh 06T3_ Nguyễn Thị Hồng Phúc 06T2


14


×