WoW 游戏软件

news/2024/11/6 15:43:33/

访问【WRITE-BUG数字空间】_[内附完整源码和文档]

我们选择Tcp协议进行传输,之所以采用tcp,首先是因为tcp传输稳定,相比于udp不稳定的传输,tcp能确保消息一定传输出去。然后是tcp有服务器,相比于 p2p 无服务器模型,tcp 可以记录数据,方便用于商用而且也比较安全。

主要设计思路:
我们选择Tcp协议进行传输,之所以采用tcp,首先是因为tcp传输稳定,相比于udp不稳定的传输,tcp能确保消息一定传输出去。然后是tcp有服务器,相比于 p2p 无服务器模型,tcp 可以记录数据,方便用于商用而且也比较安全。

客户端主要设计思路:
基于TCP协议,实现发送消息给服务器和从服务器接收消息。要实现“迷你魔兽世界” 客户端的基本框架主要分为以下几个部分:

指令,根据输入的指令,比如login,move,attack等,客户端要判断指令的有效 指令设计,输入指令login playername,客户端向服务器发送登录请求,输入指令move direction,客户端向服务器发送移动请求,输入指令attcak playername,客户端发送攻击另一位玩家的请求,输入指令speak message,表示该玩家要发言,内容为message,同样要向服务器发送请求,输入指令logout,表示退出登陆。

无效指令,如果输入的不是约定好的指令以及指令结构不正确,则客户端不向服务器发送请求。第一,登陆时玩家名不能有空格;第二,move指令后面的方向必须在north,south, west和east这几个方向中,如果为其他内容,则输出无效的方向的提示;第三,输入attack 指令后要判断被攻击玩家是否在该玩家视野范围内,如果不在视野范围内,则输出错误信息 “The target is not visible”,玩家视野范围为(x-5,x+5),(y-5,y+5),x和y为玩家坐标;第四,speak生成的数据中可以有空格;第五,logout指令,没有参数。

发送请求,根据输入的有效指令得到消息类型和消息内容,按照协议打包成字节发送给服务器。

处理应答,客户端接收到来自服务器的包,根据协议,先解析出消息类型,再根据不同消息类型的包的结构解析出包中的数据,再根据这些数据输出消息。

线程问题,客户端必须和服务器端进行异步通信。例如,当其他玩家生成一个 speak 命令,客户端将会收到SPEAK_NOTIFY 信息从服务器端,尽管客户端没有请求这个消息。这意味着客户端不能阻塞用户的输入。所以将输入指令发送请求和接收广播/应答的函数设为两个线程,其中一个通过一个死循环,输入指令并处理,另一个也是通过死循环不停接收广播/应答并处理。

异常处理,当遇到一些特殊情况时需要做异常处理。

如果服务器端不可用并且连接不能生成,客服端必须退出,且显示错误信息”The gate to the tiny world of warcraft is not ready.”。要实现这一点,需要通过try/except 连接地址和端口号的时候检测异常。

如果客户端从服务器端收到一个异常消息,客户端必须退出,然后输出错误消息”Meteor is striking the world.”。即如果客户端收到的包的长度不符合规范,或者解析到的消息类型不存在或与包的长度不匹配,说明客户端收到了一个异常消息。

如果客户端和服务器端的连接被异常中断,客服端必须退出,然后显示一个错误消息”The gate to the tiny world of warcraft has disappeared.”。由于python中的套接字断开连接时不会出现异常,而是会不断接收到空字符,所以在接收消息的地方做一个判断,如果接收到的消息长度为0,说明连接断开,则执行该异常处理。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/350687.html

相关文章

LoadRunner 2023 下载和安装

下载 LoadRunner目前最新的版本是2023版,需要到Micro Focus公司的官网注册账号然后申请下载,比较麻烦,这里我把大家常用的社区版本,搬运到阿里云盘上,供下载: https://www.aliyundrive.com/s/WtHSzD4MrXw …

【C++从入门到放弃】list深度剖析及模拟实现

🧑‍💻作者: 情话0.0 📝专栏:《C从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢! list …

07_scrapy的应用——获取电影数据(通过excel保存静态页面scrapy爬虫数据的模板/通过数据库保存)

0、前言: 一般我们自己创建的一些python项目,我们都需要创建虚拟环境,其中会下载很多包,也叫做依赖。但是我们在给他人分享我们的项目时,不能把虚拟环境打包发送给别人,因为每个人电脑系统不同,我们可以把依赖导出为依赖清单,然后别人有了我们的依赖清单,就可以用一条…

一文快速了解软件技术基础

前言 数据结构和算法是计算机科学的基石,它们为我们提供了处理和组织数据的方法和工具。通过学习数据结构,您将能够理解如何存储和操作不同类型的数据,如何优化内存使用和访问效率,以及如何设计高效的算法来解决各种计算问题。掌…

实训笔记6.12

实训笔记6.12 6.12一、座右铭二、知识回顾2.1 面向对象的两大核心概念:类和对象2.2 面向对象的三大特征封装性继承性多态性-必须在继承之上抽象性 2.3 面向对象的常用关键字2.4 Java设计模式中适配器模式2.4.1 接口适配器2.4.2 类适配器2.4.3 对象适配器 三、Java常…

SQL 知识你知道吗:公共表表达式(CTE)

一、概念 公共表表达式(CTE)是一种临时命名查询结果集的方式,可以在一个查询语句中多次引用。CTE在查询语句中定义,可以在查询语句中的任何位置使用,并且只在查询语句执行期间存在。CTE通常用于简化复杂的查询&#x…

Shopro商城,多平台移动商城(微信公众号、微信小程序、H5网页、Android-App、IOS-App购物商城)

基于Uniapp进行开发的多平台(微信公众号、维信小程序、H5网页、Android-App、IOS-App)购物商城,拥有强大的店铺装修、小程序直播、自定义模板、路由同步、多端支付(威信,支付宝)、多规格商品、运费模板、多…

如何玩Chrome的小恐龙游戏

方法一: 打开Chrome浏览器并访问 chrome://dino 方法二: 物理或虚拟断网(拔掉物理网线、断开WIFI连接,或者禁用网卡),游玩过后记得重新打开哦~ 游玩方法: 键入“空格”,长按短按分…