目录 1
第1章 概述 1
1.1 网络游戏简介 1
1.2 常见网络棋牌游戏 3
1.2.1 中国象棋简介 3
1.2.2 国际象棋简介 4
1.2.3 拱猪简介 6
1.2.4 桥牌简介 7
1.3 常见网络游戏站点 8
1.3.1 联众游戏网站 8
1.3.2 中国游戏中心 9
第2章 TCP/IP协议 10
2.1 TCP/IP协议簇简介 10
2.1.1 TCP/IP结构 10
2.1.2 常用协议 12
2.1.3 RFC的介绍和获取方法 13
2.2 TCP/IP基本概念 14
2.2.1 IP地址 14
2.2.2 端口号 15
2.2.3 地址解析协议 16
2.2.4 域名系统DNS 18
2.3 小结 22
第3章 Windows Socket编程接口 23
3.1 Windows Socket编程的基本概念 23
3.1.1 套接字(Socket)概念 23
3.1.2 Windows Socket组成部分 23
3.1.3 Windows Socket编程的基本模式 23
3.1.4 阻塞处理方式 24
3.1.5 非阻塞处理方式 24
3.1.6 异步处理方式 24
3.2 Windows Socket基本函数 24
3.2.1 WinSock的启动与终止——WSAStartup()与WSACleanup() 24
3.2.2 创建套接字——Socket()和WSASocket() 26
3.2.3 指定本地地址——bind() 27
3.2.4 建立套接字连接——connect()和WSAConnect() 27
3.2.5 监听连接——listen() 28
3.2.6 接受连接请求——accept()和WSAAccept() 29
3.2.7 数据发送——send()和sendto() 29
3.2.8 数据接收——recv()和recvfrom() 31
3.2.9 I/O多路复用——select() 32
3.2.10 中断连接——closeSocket()和shutdown() 33
3.2.11 其他API函数 33
3.3 客户/服务器通信例程 37
3.3.2 服务器端程序示例 38
3.3.1 客户/服务器编程 38
3.3.3 客户端程序示例 41
3.4 小结 43
第4章 套接字I/O模型 44
4.1 select模型 44
4.2 WSAAsyncSelect模型 47
4.3 WSAEventSelect模型 50
4.4 Overlapped模型与CompletionPort模型 51
4.5 封装套接字模型类 55
4.6 小结 69
5.1.1 线程和进程的区别 70
第5章 多线程编程 70
5.1 多线程概述 70
5.1.2 线程的概念 71
5.1.3 工作者线程 72
5.1.4 UI线程 75
5.2 线程通信 77
5.2.1 使用全局变量通信 77
5.2.2 使用用户定义的消息通信 78
5.2.3 使用事件对象通信 79
5.3.1 CSyncObject类 81
5.3.2 CSingleLock类 81
5.3 线程同步 81
5.3.3 CMultiLock类 82
5.3.4 CCriticalSection类 83
5.3.5 CMutex类 83
5.3.6 CSemaphore类 83
5.4 小结 84
第6章 服务器线程池模型 85
6.1 线程池模型 85
6.1.1 线程池类概念 85
6.1.2 线程池类定义 86
6.1.3 线程函数 89
6.2 服务器线程池框架 91
6.2.1 服务器线程池构成 91
6.2.2 管理线程池类 92
6.2.3 接收线程池类 95
6.2.4 发送线程池 99
6.2.5 分析线程池 103
6.3 线程池类程序代码 109
6.4 小结 114
第7章 使用可视化建模工具Rational Rose 115
7.1 建模工具Rational Rose 115
7.1.1 Rational Rose简介 115
7.1.2 Rational Rose界面 117
7.1.3 Rose模型的4个视图 120
7.2 Rose中的框图简介 124
7.3 小结 131
第8章 网络游戏设计的需求说明 132
8.1 网络游戏下载和用户管理 132
8.2 网络游戏管理接口需求 133
8.3 网络游戏界面功能需求 134
8.4 网络游戏功能需求 139
8.5 小结 144
第9章 网络游戏Use Case框图的建立 145
9.1 Use Case框图 145
9.2 角色和用户案例 146
9.3 建立角色和用户案例 150
9.3.1 角色的建立 150
9.3.2 用户案例的划分原则 152
9.3.3 用户案例的分类 153
9.4 小结 166
第10章 游戏协议设计 167
10.1 游戏协议 167
10.1.1 游戏协议概念 167
10.1.2 游戏协议格式 170
10.2 操作代码 171
10.3.1 管理操作类协议 174
10.3 游戏协议详细分类 174
10.3.2 游戏大厅类协议 176
10.3.3 打牌类协议 185
10.3.4 旁观类协议 190
10.4 协议打包/解包程序代码 193
10.5 小结 203
第11章 游戏客户端类图设计 204
11.1 客户端类的划分 204
11.2 游戏基本类 205
11.3 游戏框架类 212
11.4 游戏通信类 219
11.5 游戏应用程序类 222
11.6 游戏处理类 224
11.7 小结 231
第12章 游戏服务器端类图设计 232
12.1 服务器端类的划分 232
12.2 游戏通信类 233
12.3 游戏协议类 243
12.4 游戏逻辑类 247
12.5 线程池类 250
12.6 用户管理类 252
12.7.1 CLobby大厅类 254
12.7 大厅管理类 254
12.7.2 CCard牌类 256
12.7.3 CTable桌子类 258
12.8 数据库类 259
12.9 小结 259
第13章 客户端框架程序设计 260
13.1 启动界面 260
13.1.1 用户登录窗口 260
13.1.2 代理服务器设置窗口 262
13.2 游戏大厅框架 263
13.2.1 游戏目录窗口 265
13.2.2 系统信息窗口 267
13.3 游戏房间框架 268
13.3.1 游戏桌窗口 269
13.3.2 站点列表窗口 272
13.3.3 在线用户列表窗口 274
13.3.4 发送聊天信息窗口 276
13.3.5 “聊天设置”窗口 277
13.3.6 系统设置窗口 278
13.3.7 邀请参加游戏窗口 279
13.3.8 输入游戏桌密码窗口 279
13.3.9 创建游戏室窗口 280
13.4 游戏牌局框架 281
13.4.1 游戏窗口 283
13.4.2 等待掉线用户窗口 284
13.4.3 退出游戏提示窗口 285
13.4.4 声称对话框 285
13.4.5 声称提示窗口 286
13.5 小结 287
第14章 游戏服务器端数据库处理 288
14.1 数据库开发方法 288
14.1.1 开放数据库连接(ODBC) 288
14.1.2 MFC ODBC类 289
14.1.4 OLE DB 290
14.1.3 MFC DAO(数据访问对象)编程 290
14.1.5 ActiveX数据对象(ADO) 291
14.2 数据库结构的访问与设计 291
14.2.1 数据库访问步骤 291
14.2.2 数据库结构设计 292
14.3 数据库访问的实现 295
14.3.1 采用的数据库开发方法 295
14.3.2 访问数据库程序代码 302
14.4 ASP访问数据库 309
14.5 小结 316