为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

网络对战平台的设计与实现

2017-09-01 28页 doc 58KB 41阅读

用户头像

is_597436

暂无简介

举报
网络对战平台的设计与实现网络对战平台的设计与实现 本 科 生 毕 业 论 文 网络对战平台的设计与实现 院 系: 信息科学与技术学院计算机科学系 专 业: 计算机科学与技术专业 学生姓名: 学 号: 指导教师: [摘 要] 网络对战平台是将各种具有某种共性的程序中的网络通信部分提取出来~编写一个独立的平台~使得各种符合平台接口的程序可以具备网络通信的能力。该平台只针对某些网络对战游戏~故称为网络对战平台。平台采用Client/Server结构~包括服务端和客户端。平台提供一种使程序进行网络通信的解决方法。本文通过现有的一些已经成熟的技术...
网络对战平台的设计与实现
网络对战平台的设计与实现 本 科 生 毕 业 论 文 网络对战平台的设计与实现 院 系: 信息科学与技术学院计算机科学系 专 业: 计算机科学与技术专业 学生姓名: 学 号: 指导教师: [摘 要] 网络对战平台是将各种具有某种共性的程序中的网络通信部分提取出来~编写一个独立的平台~使得各种符合平台接口的程序可以具备网络通信的能力。该平台只针对某些网络对战游戏~故称为网络对战平台。平台采用Client/Server结构~包括服务端和客户端。平台提供一种使程序进行网络通信的解决。本文通过现有的一些已经成熟的技术~包括CS结构~SOCKET网络编程~数据库编程~多线程编程等~并结合自己的一些想法~实现了一种网络对战平台~使得符合接口规定的程序可以相互通信的能力。网络对战平台定义了一种软件重用的方法~提供了一种可扩展软件设计的方法~从而可以提高编程效率。编程者的注意力可以更多的集中在本地化编程上~而网络编程部分可以只进行少量接口编程即可。 关键词:网络对战平台,接口,socket编程 - ii - ii Abstract The goal of Network Game Platform is to extract a variety of common procedures and build a single platform,whitch makes the programmes that implements the interface can comunicates.The platform is only for network game comunication,so it is call Network Game Platform.The Platform is built upon Client / Server structure, including server and client.The platform provides a solution on programme communication. In this paper, we use some mature technologies, such as CS structure, SOCKET network programming, database programming, multi-threaded programming, combined with some of my own ideas, and makes interface with the procedure laid down in the can communicate with each other Capacity. Network Game Platform define a software reuse approach provides a scalable software design methods, which can improve programming efficiency. Programming the attention can focus on the more localized programming, network programming and some can only be a small amount of programming interface. Keywords: Battle.net;interface;socket programming - iii - iii 目 录 [摘 要] .................................................................................................................................................... II ABSTRACT .............................................................................................................................................III 第一章 前言 ........................................................................................................................................ 1 1.1 网络对战平台概述 ........................................................................................................ 1 1.2 相关技术概述 ................................................................................................................ 1 1.2.1 socket编程概述 ............................................................................................. 1 1.2.2 数据库编程概述 .............................................................................................. 2 1.2.3 Client/Server结构概述 ............................................................................... 3 第二章 对战平台定义 ............................................................................................................................. 4 2.1 网络对战平台功能的定义 ............................................................................................ 4 2.2 网络对战平台接口的定义 ............................................................................................ 4 2.3 网络对战平台命令的定义 ............................................................................................ 5 2.3.1 平台命令的定义 .............................................................................................. 5 2.3.2 用户命令的定义 .............................................................................................. 6 第三章 对战平台服务器端定义 .............................................................................................................. 7 3.1 平台服务器端功能的定义 ............................................................................................ 7 3.2 转发关系的定义 ............................................................................................................ 8 3.3 数据库定义 .................................................................................................................... 8 第四章 对战平台客户端定义 ........................................................................................................... 10 4.1 平台客户端功能定义 .................................................................................................. 10 4.2 平台客户端接口定义 .................................................................................................. 10 第五章 对战平台具体设计 ............................................................................................................... 11 5.1概述............................................................................................................................... 11 5.2 平台服务器端具体设计 .............................................................................................. 11 5.2.1 网络通信设计 ............................................................................................... 11 5.2.2 多线程设计 ................................................................................................... 12 5.2.3 数据库设计 ................................................................................................... 13 5.3 平台客户端具体设计 .................................................................................................. 14 5.3.1 网络通信设计 ............................................................................................... 14 5.3.2 客户端启动程序设计 .................................................................................... 15 - iv - iv 第六章 结论 ...................................................................................................................................... 17 致谢 .......................................................................................................................................................... 18 参考文献 .................................................................................................................................................. 19 附录 .......................................................................................................................................................... 20 - v - v 第一章 前言 1.1 网络对战平台概述 随着互联网的兴起,人们娱乐的手段开始多元化。网络使得人们放弃过去自娱自乐的游戏方式,而开始在网络上寻找志同道合,水平相当的网友进行共同娱乐。人们的这种需求加速了网络对战平台的兴起。 如今中国市场有代表性的两种对战平台非浩方对战平台和QQ游戏莫属。浩方对战平台提供了一种可在局域网通信的游戏能在非局域网的网络上进行通信的解决。这在中国是开创性的,浩方得到了热爱游戏的玩家的大力支持,成长迅速。创造了注册用户过亿,最高同时在线人数过百万的骄人记录。而另一种对战平台QQ游戏是腾讯旗下多人在线娱乐休闲平台。与浩方使用第三方开发的游戏不同,QQ游戏平台与平台上包含的游戏均为腾讯自主开发。QQ游戏同样获得了人们的认可,得到了各个年龄层人们的喜爱。它们的成功说明了人们对在线娱乐的渴望。但它们都是面向用户的,用户只需使用平台,接受他们提供的服务即可。 而本文所记述的对战平台面向的人群更广泛些。它也面向用户,程序开发者可以将平台及与平台整合的自己开发的游戏程序一起打包给用户,以供其娱乐。同时更重要的是,平台提供了一种二次开发的能力并具备一定的可扩展性。平台提取了各种具备网络通信能力的游戏的网络通信部分,减轻了游戏程序开发者负担并转换了其关注的焦点。同时,新的游戏可以很方便地整合进旧的平台中。 1.2 相关技术概述 1.2.1 socket编程概述 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket接口是TCP/IP网络的API,socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也具有一个类似于打开文件的函数调用socket (),该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过该socket实现的。 1 常用的socket类型有两种:流式socket(SOCK_STREAM)和数据报式socket(SOCK_DGRAM)。流式是一种面向连接的socket,针对于面向连接的TCP服务应用;数据报式socket是一种无连接的socket,对应于无连接的UDP服务应用。 socket描述符是一个指向内部数据结构的指针,它指向描述符表入口。调用socket函数时,socket执行体将建立一个socket,实际上"建立一个socket"意味着为一个socket数据结构分配存储空间。 socket执行体为你管理描述符表。两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。socket数据结构中包含这五种信息。 1.2.2 数据库编程概述 数据库(database)是存储在计算机里的结构化数据的集合,通常由数据库管理系统(DBMS = DataBase Management System)软件(如Oracle、DB2、SQL Server等)对数据库进行管理,应用程序通过(标准)编程接口(如ODBC、JDBC、ADO等)来访问数据库。各个角色在数据库编程中的相互关系如图1。 用户 用户 „„ 数据库应用程序 标准编程接口 数据库管理系统 数据库管理系统 „„ 数据库 数据库 图1:数据库编程中各角色关系 目前绝大多数数据库为关系数据库(relational database),对应的管理软件为关系型数据库管理系统(RDBMS = Relational DBMS)。 SQL(Structured Query Language结构化查询语言)为关系数据库的通用查询语言。SQL包括查询(query)、操作(Manipulation)、定义(definition)和控制(control)四种功能。用户通过SQL来操作数据库。 2 1.2.3 Client/Server结构概述 Client/Server结构(C/S结构)是大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。 C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如ORACLE、SYBASE、InfORMix或 SQL Server。客户端需要安装专用的客户端软件。 C/S结构的优点是能充分发挥客户端,,的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。 3 第二章 对战平台定义 2.1 网络对战平台功能的定义 网络对战平台实现了使不具有网络通信能力的游戏程序在网络中可以进行通信的功能。本平台主要实现了两个功能:一,集成在此平台中的游戏程序彼此通信的数据在网络中的正确传输;二,平台中的用户特别是处于同一个游戏中的用户的管理。 处于网络环境中的游戏程序的通信是实现网络对战的基础,因此也是本平台关注的一个焦点。此功能使得游戏程序的网络通信部分的实现与其它功能的实现相互脱离开。游戏程序的实现者只需把关注点放在如何实现程序的特性,如何美化程序界面等功能上。而至于游戏程序如何在网络上相互通信,只需花费一点时间和精力,进行少量的接口编程,使得游戏程序符合平台的相关规定,即可实现。可以说这样可大大减少游戏程序开发者的时间,使得程序开发者可以将时间和精力放在游戏程序更应该被关注的部分。 平台中的用户特别是处于同一个游戏中的用户的管理是平台关注的另一个焦点。平台把处于网络中的不同游戏程序看作离散点。他们之间的相互联系通过本台实现,而这些联系的管理当然也由平台负责。为了保证平台中用户之间可以方便正确地通话及娱乐,这种管理必须确保安全和高效。本文采用Client/Server结构,来实现符合要求的管理。 2.2 网络对战平台接口的定义 由于平台不仅可以运行一种游戏程序,也不仅可以运行一个人编写的游戏程序。如何让这些各种各样的游戏程序都可以方便地使用平台提供的功能,最方便的解决方法就是定义一套接口。只要游戏程序符合这一接口规范,就可以方便地整合进平台,拥有网络通信的能力。 接口定义是重要的,本节将阐述一个最小且功能完备的接口定义,具体如下。 1,游戏程序的动作可以语句化。所谓语句化,就是说游戏程序的动作可以通过定义一些简单的表示出来。例如在(X,Y)坐标放置一个棋子可语句化为PU X Y,平台把语句化后的游戏程序的动作称为命令。命令分为平台命令和用户命令。关于命令的进一步定义将在下节阐述。 2,游戏程序必须具备和平台客户端在本地进行通信的能力。这一功能可以使得 4 平台客户端得到游戏程序打算发送的数据,并将其通过网络传送给平台服务器端。本文将通过共享文件的方式来实现游序程序和平台客户端的本地通信,游戏程序必须支持这一方式。 3,游戏程序必须要实现必要的平台命令。平台命令是用来与平台服务进行交互的。平台服务器端主要利用这些命令来管理游戏,例如游戏地创建与退出。平台命令的一部分可由平台客户端实现。而其它平台命令,游戏程序可根据平台的要求及自身功能的需求而选择实现,且实现必须保证正确。平台命令不能用户自己创造,将由平台自己定义。 4,为了保证游戏数据传输的及时与正确,用户命令不宜过于复杂,一次传输的用户命令不宜过多。 除了以上的接口规定,游戏程序的其余功能的实现将不做任何要求。游戏程序使用何种语言,采用何种技术,运用何种方法,,将完全由程序开发者自由把握。 2.3 网络对战平台命令的定义 2.3.1 平台命令的定义 平台命令是游戏程序与平台服务器端进行交互的命令,为了使平台服务器端能“看懂”平台命令,平台命令则完全由平台本身定义。平台命令由动作标识和参数组成。为了区分于用户命令,动作标识将全部采用下划线(_)开头。平台命令分为发起命令和应答命令。发起命令为游戏程序向服务器端传送的命令,而应答命令是服务器端响应游戏程序的命令。 表1为系统定义的平台命令。 表1:平台命令 动作 平台命令 类别 例子 登录平台 _LOGIN 发起命令 _LOGIN 创建游戏 _CREATE 发起命令 _CREATE 退出游戏 _EXIT gid 发起命令 _EXIT 1(1为游戏ID) 加入游戏 _JOIN gid 发起命令 _JOIN 1(1为游戏ID) 开始游戏 _START gid 发起命令 _START 1(1为游戏ID) 指令执行成功 _SUCCESS 回应命令 _SUCCESS 5 指令执行失败 _FAIL 回应命令 _FAIL 分配主机标识 _ID id 回应命令 _ID 1(1为主机标识) 其中主机标识是服务器端为了区分平台中的主机而分配的不相同主机号。平台在用户登录成功后,将用_ID id命令进行回复,为主机分配主机号。下面提到的主机标识将沿用此解释。 2.3.2 用户命令的定义 用户命令由主机标识,动作标识及参数组成。其中主机标识和动作标识必不可少。用户命令完全用用户自定义,但主机标识为确保在同一游戏中的唯一,需使用服务器端的分配的主机标识。游戏程序必须具备将程序动作转换为命令以及将用户命令解析为程序动作的能力。同时,用户程序还需确定这一动作发生的窗口。 表2为用户命令的示例。 表2:用户命令 动作 命令 例子 主机hid在(x,y)处放置一子 hid put x y 1 put 2 3 主机hid移除(x,y)处一子 hid remove x y 1 remove 2 3 主机hid移动(x0,y0)到(x1,y1) hid move x0 y0 x1 y1 1 move 2 3 4 5 主机连续n次执行op动作 Hid opn param 1 put2 2 3 4 5 6 第三章 对战平台服务器端定义 3.1 平台服务器端功能的定义 平台服务器端作为整个平台的大脑中枢,在整个对战平台中起着至关重要的作用。它主要有两个功能:一,接受平台用户发送的用户命令,并将其转发给适当的其他用户;二,接受平台用户发送的平台命令,分析并将结果通过平台命令中的应答命令反馈给发送平台命令的用户。 转发对战平台用户发送的用户命令,并将其转发给适当的其他用户,是对战平台服务器端的二个主要功能之一。从图2可以看出,平台服务器端位于对战平台构建的网络中的最核心的地位,任何传送给网络其他用户的数据必须经过它中转。将数据正确的转发是本功能关注的一个重要焦点,转发关系的定义将在3.2节中阐述。 用户 用户 客户客户 端 端 服务器端 客户客户 端 端 用户 用户 图2:服务器端在平台中的位置 接受并反馈用户发送的平台命令是服务器端另一个重要的功能。平台服务器端通过这一功能管理游戏与用户。用户通过这一功能获得了与平台中其他用户相互通信或断开与其他用户通信的许可。可以说是与其他用户通信之前和通信之后,用户与对战平台之间所须答成的约定。这一功能的一次成功实现将导致平台服务器端在其数据库文件中增加,删除或更新相应的记录项。关于数据库的设计,将在3.3节中阐述。 平台服务器端所处的位置决定了它的重要性,因此一个安全可靠高效的平台服务器端将是平 7 台追求的一个重点。 3.2 转发关系的定义 所谓转发关系是指发送用户命令的用户与服务器端将用户命令转发给的用户之间形成的通信关系。这种关系是一种暂时的且动态的关系,它随着每次发送的用户命令地不同而有所不同。在对战平台连接接入平台用户所形成的网络中,每两个用户之间能够知道对方的存在,并无法知道对方的通信地址。而平台通过转发关系,可以暂时地将某些用户联系起来,达到通信的目的。 转发关系中接收方的确定将通过平台服务器端根据事先制定的规则分析得到。具体有如下几种方式: 1, 处于游戏或非游戏状态的发送者与对战平台上的所有用户。这种通信方式被 称为公告。该方式安全性要求较低,任何平台上的用户均可与其他用户建立 此关系。 2, 处于游戏或非游戏状态的发送者与平台上某一特定的用户。这种方式被称为 密语。平台须保证密语不被平台第三方收到。同时为了增强游戏的公平性, 禁止处于同一个游戏中的双方使用密语。 3, 处于游戏状态的发送者与处于同一个游戏中的所有用户。为了游戏的公平性 并且避免观看者打扰玩家,这一方式的发送者应该只限于玩家。 4, 处于游戏状态的发送者与处于同一个游戏中的观看者。这一方式是为了满足 观看者交流看法的需要。平台需保证发送内容不被其他角色收到。 3.3 数据库定义 为了方便平台服务器端管理平台上的用户与游戏,平台服务器端需建立相应的数据库存储必要的信息。为了满足需要,平台服务器端至少需建立两个表:user表和game表。这两个表分别用来管理平台上的用户及已经创建的游戏。 user表记录了处于平台中所有用户的信息。为了符合对战平台方便快捷地登入和登出的思想,平台不需要用户名及密码。所以相应地,在user表中,每条记录项也并非永久地存在的。user表中的记录项随着用户的一次成功登入被创建,伴随着用户的登出被删除。user表的设计如表3所示: 表3:user表 8 名称 属性 类型 UID 用户标识 整型 USTATUS 用户状态 整型 UCHARA 用户在游戏中的角色 整型 GID 所处游戏标识 整型 UIP 用户IP 字符串 user表中的UID为表的主键,用来标识平台中的用户。USTATUS代表用户所处的状态,0标识用户不在任何游戏中,1标识用户处于游戏状态。UCHARA代表用户在游戏中的角色,当用户不在游戏中,UCHARA为0。1标识用户为游戏创建者,2标识用户为游戏参与者,3标识用户为游戏观看者。GID为用户所处游戏的标识,为外键。用户IP标识用户的IP地址。 game表记录了平台中所有已经被创建并且还在进行中的游戏的信息。在游戏成功创建时,平台服务器向game表增加一条记录项。在所有用户退出游戏后,平台则在game表中删除相应的游戏的记录项。game表的设计如表4所示: 表4:game表 名称 属性 类型 GID 游戏标识 整型 GSTATUS 游戏状态 整型 NUM 游戏人数 整型 DATE 游戏创建时间 日期 game表中的GID为表的主键,用来标识平台创建的游戏。GSTATUS标识游戏所处的状态,0标识未开始,1标识开始。NUM标识游戏中的人数。DATE标识游戏创建的时间。 9 第四章 对战平台客户端定义 4.1 平台客户端功能定义 平台客户端是游戏程序与平台服务器端的桥梁(如图3),这也是它最重要功能。平台客户端从与游戏程序约定好的共享文件中取出数据,并通过它与服务器端的网络连接传给服务器端。同时,它会将从服务器端收到的数据,存储到共享文件中,以供游戏程序使用。平台客户端实现了本地通信与网络通信的转变。 另外,平台客户端也可以实现一些平台命令。比如创建游戏,退出游戏,加入游戏等。 平台客平台服务用户 户端 器端 图3:平台客户端所处位置 4.2 平台客户端接口定义 做为游戏程序与平台服务器端的桥梁,平台客户端具有两个接口。 一个接口是其与游戏程序正常通信的保证,这个接口已经在2.2节阐述。 另一个接口是其与平台服务器端正常通信的保证。这个接口为网络接口,将通过socket编程实现。平台服务器端将设立监听套接字来监听平台客户端发来的请求。客户端通过套接字连接服务器端,当连接成功后,客户端即与服务器端建立了连接。客户端可以通过这一连接与服务器端进行网络通信。 10 第五章 对战平台具体设计 5.1概述 做为本文理论部分的补充和实践,本章展示了本文理论的可行性。本章将利用Windows下的编程环境,展示一个具备本文阐述的功能的平台的设计模型。本章阐述的平台的设计将包括服务端设计与客户端设计。而游戏程序因为不属于平台的一部分,可以采取一个简单的程序进行模拟。 5.2 平台服务器端具体设计 5.2.1 网络通信设计 服务器端网络通信的设计将采用MFC的winsock。图4出示了Windows 服务器端流程。 WSAStartup socket bind listen accept recv send closesocket WSACleanup 图4:Windows服务端流程 WSAStartup与WSACleanup分别用来注册与注销Winsock所需要的dll。Winsock 11 通过socket函数创建套接字,用创建成功的套接字进行bind和listen操作,当这两个操作成功后,服务器即启动成功。服务器将在指定的IP与端口号上监听所有来自客户端的连接。每当通过TCP/IP的三次握手建立一个连接后,accept将返回一个用来和所连接客户端通信的套接字。通过recv和send操作,服务端可以接收来自客户端的消息并向客户端发送自己的信息。当连接不需要时,closesocket将关闭指定的套接字,从而关闭套接字所关联的连接。 5.2.2 多线程设计 多线程是为了使得多个线程并行的工作以完成多项任务,以提高系统的效率。线程是在同一时间需要完成多项任务的时候被实现的。使用线程有很多的好处,下面将列举四点: 1,使用线程可以把占据长时间的程序中的任务放到后台去处理 2,用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 3,程序的运行速度可能加快在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。 4,提高用户界面按钮的响应速度。 MFC类库提供了对多线程编程的支持。函数CreateThread可以创建一个新线程,其原型如下: HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); 其中lpStartAddress为函数指针,其指向的函数即为线程入口函数,一般入口函数的原型为: 12 DWORD WINAPI ThreadProc (LPVOID); 而函数所需要的参数,将通过lpParameter参数进行传递。程序员可以在ThreadProc中定义线程的动作。 在平台服务端上,服务端将为每个连接创建一个线程,在线程中处理与这个连接相关的方方面面,例如与客户端的通信等。 5.2.3 数据库设计 对于大型的应用,平台应选用SQL Server等做为数据库,但本章将阐述的是用Access做为数据库。而相应的采用MFC提供的DAO技术进行数据库操作。 DAO(Data Access Objects数据访问对象)——为了为微软自己的Access所建立的微软喷气式(Jet喷射)数据库,提供比ODBC更丰富的功能(如支持数据库定义语言DDL及可访问表与列结构)和更快捷的访问,微软开发了DAO,并在MFC的原有ODBC类的基础上,建立了一系列新类CDao*:CDaoDatabase(数据库)、CDaoRecordset(记录集)和CDaoRecordView(记录视图)及CDaoTableDef(表定义)、CDaoQueryDef(查询定义)、CDaoWorkspace(工作空间)。 DAO的CDaoDatabase表示一个到数据库的开放连接,但因为已经引入了CDaoWorkspace类,所以事务的控制和管理不再属于CDaoDatabase类。 类CDaoDatabase的构造函数为 CDaoDatabase( CDaoWorkspace* pWorkspace = NULL ); 若以void或NULL调用该构造函数,则所构造的数据库对象称为缺省工作空间的一部分。但构造的CDaoDatabase对象还没有连接到一个数据库。要建立连接,需要调用Open函数: virtual void Open( LPCTSTR lpszName, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = _T("") ); 其中,lpszName一般为MDB文件的路径(也可以是网络UNC = Uniform Naming Convention统一命名协定)。 打开数据库后,程序就可以对数据库进行操作了。利用DAO的CDaoTableDef类,可以在应用程序中观察和修改数据库的内部结构,还可以获得特定表的各个字段、字段的类型和长度等信息。 CDaoQueryDef类封装了一个查询,该查询被存储在数据库或内存中。应用程序可 13 以用查询来保存常用的SQL语句,并可给查询取名供使用。相对于反复构造SQL语句,这种形式为查询功能的复用提供了一种方便的方法。此外,它还可以改善应用程序的性能,因为不必每次调用时编译这些SQL语句。下面是CdaoQueryDef提供的主要函数: virtual void Open( LPCTSTR lpszName = NULL ); virtual void Create( LPCTSTR lpszName = NULL, LPCTSTR lpszSQL = NULL ); virtual void Append( ); CString GetSQL( ); void SetSQL( LPCTSTR lpszSQL ); virtual void Execute( int nOptions = dbFailOnError ); 通过MFC提供的这些类。程序可以进行数据库的添加、删除、查找和更新等功能。对于一些需要更改数据库的平台命令,服务端将通过分析命令,运用DAO技术进行符合的数据库操作。 5.3 平台客户端具体设计 5.3.1 网络通信设计 平台客户端的网络通信设计将采用MFC的winsock,图5为Windows客户端流程。 WSAStartup socket connect send recv closesocket WSACleanup 图5:Windows客户端流程 14 客户端与服务端具备相同名字的函数的功能相同。但客户端不需要bind与listen,而是需要connect。connect是客户端向服务器发送连接请求。当connect成功时,客户端建立了和服务端的连接。 5.3.2 客户端启动程序设计 客户端需要具有启动游戏程序的功能。用一个程序启动另一个程序的语句也是利用windows提供的函数。其中需要用的结构和函数如下。 SHELLEXECUTEINFO结构记录了被调用进程的一些信息,定义如下: typedef struct _SHELLEXECUTEINFO { DWORD cbSize; ULONG fMask; HWND hwnd; LPCTSTR lpVerb; LPCTSTR lpFile; LPCTSTR lpParameters; LPCTSTR lpDirectory; int nShow; HINSTANCE hInstApp; LPVOID lpIDList; LPCTSTR lpClass; HKEY hkeyClass; DWORD dwHotKey; union { HANDLE hIcon; HANDLE hMonitor; } DUMMYUNIONNAME; HANDLE hProcess; } SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO; 其中lpFile包含被调用程序的路径,绝对或相对都可以。用适当的值给此结构赋值后。调用全局函数: 15 BOOL ShellExecuteEx( LPSHELLEXECUTEINFO lpExecInfo ); 即可执行所要的程序。 16 第六章 结论 本文描述了一个网络对战平台的模型,并定义了实现此模型所需要的方法。该模型使平台具备网络通信的功能。游戏程序通过与平台的接口,使得游戏程序具备网络通信的能力。接口的定义使得模型具备可扩展性。任何人编写的程序,只要符合平台的接口规范,就可以方便地整合进这个平台。如今互联网,每个人都扮演着信息的接收者和发布者的双重角色。而此平台的设计也恰好符合这一当今互联网的特点。任何人都可以发布自己编写的游戏,供其他人使用。而由于存在着这样一个能用的平台,游戏间的通信变得非常简单。聚合更多人的力量可以使得平台的游戏更加丰富,而每平台用户也有了选择游戏的机会。 但同时,平台还存在着一些缺点。平台并不支持所有的游戏,特别是一些大型复杂游戏。这是因为游戏动作的语句化对于平台非常重要。但有些游戏语句化非常困难或者语句化后的命令非常复杂。为了增加平台的可扩展性和用户使用的方便性,平台并没有更多的关注系统的安全。平台抵御恶意程序的攻击能力较差。 17 致谢 感谢李才伟老师的指导。他在我选题等方面给了我很多的指导。对我论文的初稿做了很多的改正。 感谢周围的同学,他们在论文过程中给了我很多有用的启发并帮我修改论文格式。 感谢母校中山大学四年的培养。她给了我知识,教会了我如何思考。 18 参考文献 [1] W.Richard Stevens ,Bill Fenner,Andrew M.rudoff.UNIX Network Programming (third edition),机械工业出版社,2004。 [2] 李才伟。Windows编程基础,2004。 [3] Raghu Ramakrishnan,Johannes Gehrke.周立柱,张志强,李超,王煜等译。数据库 管理系统原理与设计,清华大学出版社,2004年3月。Database management systems(third edition)。 [4] 齐治昌,谭庆平,宁洪。软件工程(第二版),高等教育出版社,2004年2月。 [5] 叶小平,汤庸,汤娜,刘海。数据库系统基础教程,清华大学出版社,2007年3 月。 [6] Anthony Jones,Jim Ohlund. Network Programming for Microsoft Windows(second edtion),Microsoft Press,2002 [7] W.Richard Stevens。TCP/IP Illustracted Volume 1:The Protocols.Addison Wesley/Pearson。2000 [8] W.Richard Stevens。TCP/IP Illustracted Volume 2:The Implementation.Addison Wesley/Pearson。2000 [9] 孙鑫、余安萍,VC++深入详解,北京:电子工业出版社,2006 [10] W.Richard Stevens。TCP/IP Illustrated Volume 3:TCP for Transactions,HTTP,NNTP,and the UNIX Domain Protocols. Addison Wesley/Pearson。 2000 19 附录 附表一 毕业论文开题报告 学生高峰 学04370144 指导李才伟 名字 号 老师 论文题目:网络即时通信系统 选题依据(简述选题的目的、思路、方法、相关支持条件及进度安排): 选题目的: 随着互联网的兴起,人们的生活方式开始被改变,娱乐方式也不例外。同平时人们自娱自乐的娱乐方式比,与多人一起娱乐更有趣味性和挑战性。网络对战平台即为顺应此形式而来。同时,在编写此软件的过程中,我希望对数据在网络中的传输和同步,多线程,数据文件的定义,软件的可扩展性等做一些研究。 选题思路与方法: 运用MFC编写界面,运用sockets实现网络传输。优化数据传输速度,保证在恶劣网络环境下数据的流畅度。支持多人在线娱乐,建立自己的线程同步机制,保证多人在线数据交互的正确性。定义自己的平台扩展接口规则,使得符合这一规则的游戏程序可以方便地整合进这个平台。定义高效的游戏录像文件,用于游戏的回放。 开 相关支持条件: 开发平台:Microsoft Visual Stadio 2005 开发语言:C++ 参考资料: 题 1,<> 李才伟著 2,TCP/IP详解(I-III卷) W.Richard Stevens著 3,论文若干 4,网上资源若干 简 进度安排: 2007.10-2007.11 确定选题 2007.11-2007.12 资料的准备 2007.12-2007.3 程序的编码与测试 况 2007.3-2007.4 论文初稿 2007.4-2007.4 论文定稿 指导教师意见: 1、同意开题 ( ) 具体建议: 2、修改后开题 ( ) 3、重新开题 ( ) 指导教师签名: 年 月 日 20 附表二 毕业论文过程检查情况记录表 指导教师分阶段检查论文的进展情况(要求过程检查记录不少于3次): 第1次检查 学生总结: 开题报告。李才伟老师在开学之初组织所有的人开会确立题目。11月份由于对我又找到李才伟具体聊了一下开题的问题,在李才伟老师的启发下,定了论文的题目 指导教师意见: 同意开题 第2次检查 学生总结: 初稿修改。内容有些不够充分。 指导教师意见: 充实内容 第3次检查 学生总结: 论文第二次初稿提交。修改格式 指导教师意见: 格式还有一些问题,需要修改 总 21 体 指导教师意见: 完 成 情 况 1、按完成,完成情况优( ) 2、按计划完成,完成情况良( ) 3、基本按计划完成,完成情况合格( ) 4、完成情况不合格( ) 指导教师签名: 年 月 日 22 附表三 毕业论文成绩评定记录 指导教师评语: 成绩评定: 指导教师签名: 年 月 日 答辩小组或专业负责人意见: 成绩评定: 签名(章): 年 月 日 院系负责人意见: 成绩评定: 签名(章): 年 月 日 23 24
/
本文档为【网络对战平台的设计与实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索