`

关于flash游戏中掉线用户判断的探讨

阅读更多
  今天有一哥们提出了关于再flash游戏中如何再服务器端判断某些用户是否已经掉线的问题,也因此引发了一些探讨.
  首先最简单的方法应该就是再服务器端socket去判断,当然再客户端也要进行对应的超时判断处理.可TCP协议本身是不带即时状态检测的,因此可能出现延迟现象等等
  讨论的结果是使用"心跳"来进行检测,定时向服务器端发送特殊信息,然后再服务器端接受并做时间判断,如果一定时间内没有接收到信息,则可认为该用户已经掉线.大致思路是这样的.
  然后有到网上搜索,发现了一篇文章总结的比较全面,内容如下:

几个版本的 AS API,发现Flash的socket越来越多的问题。也许早就有人总结,不过我是个新手,也不太经常看这方面的前辈经验文章,所以遇到了问题,还是自己想了点歪招。

1、数据蒸发。这并不是Flash本身的问题,这种结构本身就有丢失数据的可能,因为之前说过,发送动作只保证一级成功,在公网上,经过n级路由器,一条命令 随时都可能蒸发。解决方法 似乎只有给每条指令加上序号,并且每条指令都立刻反馈,服务器 和客户端两方都要检查序列,并保存一定数量的 buffer。

2、数据粘连。
Flash动画本身是有速率的,对于一个30fps的动画,如果在1/30秒内收到多条消息,在socket的buffer中,它们就会粘连在一起。因为AS的事件触发是以flash动画的根计时器为单位的。解决方法是常见的长度标记,就是在消息头部标记长度,然后将buffer中的 数据按长度切开。但是这样偶尔会有切到最后剩下半条消息的情况发生,因为它的buffer好像是定长的。同时,在高速发送数据的测试中,也发生了发送数据的粘连,多是和心跳包粘连了。发送消息是主动触发,也就是socket.flush(),所以理论上它应该和动画速率无关,为何粘连仍在考证中。

3、离线。TCP协议 本身是不带即时状态检测的。这意味着如果一个客户端突然死机,或者网络中断(不是主动关闭),服务器是不能马上知道的。TCP 的发送消息机制会在6秒、24秒、72秒重发,遍历栈以检查客户端连接中断有时候需要2个小时,这在游戏中是不可以接受的。解决方法就是心跳检测,一段间隔发送一个特殊包给服务器,服务器立刻反馈,同时客户端和服务器端都有一个计时器,每个间隔检查最后的心跳时间和当前时间对比,超时的就可以立刻认为断线。



4、性能。Flash由于自身的祯特性,在高速收发短命令时候性能是相对较差的。在我的实验中,每秒300多条消息(包括解密过程),就会出现丢失了,再密集一些,socket就可能异常中断。好在一般的互动游戏中,不会有这种情况出现,如果需要瞬间接受大量命令(比如进入大厅刷新在线用户列表),可以尝试在逻辑部分将数据粘合成一个大的命令。

分享到:
评论

相关推荐

    双开游戏显示双用户中Administrator 切换用户不掉线

    综上所述,要实现“双开游戏显示双用户中Administrator 切换用户不掉线”,需要结合系统设置、注册表修改、软件工具和游戏的兼容性等多方面进行操作。这不仅考验用户的电脑技术,也对系统的稳定性和安全性提出了挑战...

    游戏掉线提醒工具2020

    游戏掉线提醒工具2020是一款专为游戏玩家设计的实用辅助软件,旨在解决玩家在游戏中因网络不稳定导致的频繁掉线问题。这款工具通过实时监控游戏的连接状态,一旦检测到游戏断开连接,它会立即采取行动,通过QQ消息的...

    游戏掉线提醒.rar

    游戏掉线提醒工具是一款专为解决玩家在游戏中遇到的网络不稳定问题而设计的实用软件。它在2020年5月发布,旨在帮助用户更好地管理游戏体验,避免因网络问题导致的游戏断开连接,影响玩家的竞技状态和游戏乐趣。 该...

    游戏掉线提醒【2021版】

    为此,“游戏掉线提醒【2021版】”应运而生,它是一款专门针对网络不稳定或断线问题设计的工具,其核心功能是通过微信等即时通讯平台及时向用户发出通知,确保用户能够迅速了解并处理游戏连接异常的问题。...

    游戏数据掉线清理工具V1.1中文绿色免费版

    由于设置了特效、部分机子可能会小卡。 DNF 掉线乱封号现象太严重了,没办法,从网上找的DNF掉线数据清理工具. 运行测试主要是删除了一些临时文件。类似于网上的DNF掉线数据清理。

    易语言掉线自动重连多用户带数据库服务端与客户端源码.rar

    永不掉线自动重连多用户管理系统【服务端_客户端】 1、掉线自动重连 2、检测账号到期时间限制 3、检测账号重复登陆 4、检测软件更新 5、检测账号黑名单 7、服务端踢出用户 8、服务端与客户端交互数据 9、...

    面向用户的支持用户掉线的联邦学习数据隐私保护方法.docx

    在联邦学习过程中,如果用户因网络故障等原因无法上传模型参数,那么联邦学习的差分隐私要求可能无法得到满足,因为用户添加的噪声可能无法被正确地聚合和考虑。这会影响整体模型的隐私性和准确性。 【差分隐私】 ...

    WOW_防踢掉线_程序_20200217.zip

    然而,无论是网络的不稳定、服务器的突然维护还是游戏客户端自身的问题,都可能导致玩家在游戏中意外掉线,从而影响到游戏的连续性和玩家的乐趣。为了解决这一问题,出现了一个名为“WOW_防踢掉线_程序_20200217.zip...

    网络游戏掉线自动关机

    使用方法:在游戏进程名处填写任务管理器中你自己游戏的进程名然后点击开始即可,这个小程序也可以让其它连网的进程在掉线时关机,只需在游戏进程名处填写你想监控的程序的名字就可以了。 由于是用C#编写,若有不能...

    游戏加速Flashwind2.9

    这类工具的主要目的是通过优化网络连接,减少延迟,改善玩家在网络游戏中遇到的卡顿、延迟高和掉线等问题,从而提供更加流畅的游戏环境。Flashwind2.9作为一款曾经广泛使用的加速器,它可能包含了多种技术手段来实现...

    万用 网络掉线提示器

    此时,一旦网络出现异常,掉线提示器就会发出声音警报,避免用户浪费宝贵时间,确保游戏进程或数据传输不被中断。 在用户体验方面,"万用网络掉线提示器"的设置过程被设计得非常简单,即使是计算机新手也能在几分钟...

    玩游戏老掉线什么情况.docx

    - **现象**:游戏过程中出现高延迟(Ping值),进而导致连接中断。 - **原因**:网络不稳定、带宽不足或网络设备故障等。 - **解决方案**: - 检查网络连接状态,确保带宽充足; - 使用网络诊断工具测试网络...

    测试网络是否掉线批处理文件

    "测试网络是否掉线批处理文件"是一个实用的工具,它可以帮助用户快速检查网络连接状态,并在检测到网络故障时执行预定义的操作,如重新连接、关机或重启。这个批处理文件是基于Windows操作系统设计的,因为批处理(....

    网络映射掉线处理程序

    在实际应用中,"网络映射掉线处理程序"对于那些依赖稳定网络映射访问远程资源的用户尤其有用,例如远程办公人员、多服务器管理员等。通过自动化处理网络掉线问题,可以显著提高工作效率,减少因网络问题导致的中断。...

    掉线提示警报器

    用于游戏挂机网络波动造成掉线时警报提示重新链接登录。

    防qq掉线工具代理环境下qq不在掉线

    QQ防掉线工具是针对网络环境不稳定或者使用代理服务器时,QQ容易出现掉线问题而设计的一款实用软件。在代理环境中,由于网络通信需要经过额外的代理服务器,这可能导致数据传输不稳定,从而使得QQ这样的即时通讯软件...

    小米路由器频繁掉线的原因是什么?小米路由器老是掉线的解决办法介绍

    然而,有时候小米路由器可能会出现频繁掉线的情况,这给用户的网络体验带来了不小的影响。以下是一些可能导致小米路由器掉线的原因及对应的解决方法: 1. **有线掉线无线不掉**: - 原因:千兆网口和五类网线不...

    STM32实现掉电保存flash.zip

    2. **选择存储位置**:在Flash中选择一个安全的存储区域,避免覆盖固件或重要的系统信息。STM32的用户可编程区域通常从0x08000000开始。 3. **写入函数**:编写一个函数,用于将数据写入Flash。该函数需要处理擦除...

    LabVIEW TCP 通讯 自动连接 掉线自动重连

    本主题聚焦于LabVIEW中的TCP/IP通信,特别是如何实现自动连接和掉线后自动重连的功能。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,确保了数据的完整性和顺序。在LabVIEW中,我们可以...

    联想网络防掉线

    标题中的“联想网络防掉线”指的是联想公司为解决用户在使用其计算机产品时可能出现的网络连接不稳定或频繁断线问题而开发的一款软件工具。这款工具可能是为了优化网络连接,增强网络稳定性,防止因各种原因导致的...

Global site tag (gtag.js) - Google Analytics