`
yysct2005
  • 浏览: 87371 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Flash的socket在实际应用上需要注意的问题

阅读更多

本文作者:奶瓶先生 转自www.54np.com
几个版本 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就可能异常中断。好在一般的互动游戏中,不会有这种情况出现,如果需要瞬间接受大量命令(比如进入大厅刷新在线用户列表),可以尝试在逻辑部分将数据粘合成一个大的命令。

分享到:
评论

相关推荐

    WebSocket客户端和服务端实例源码

    此方式比轮询要高效,且因为 Flash 安装率高,应用场景比较广泛,但在移动互联网终端上 Flash 的支持并不好。IOS 系统中没有 Flash 的存在,在 Android 中虽然有 Flash 的支持,但实际的使用效果差强人意,且对移动...

    dome-client.js:一个MOO可以运行以供其用户连接的node.jssocket.io Web应用程序。 不使用Flash或Java

    实际上,它是用于连接上的游戏的默认客户端特征运行连接到任何游戏的公共客户端,或仅连接到您的游戏的私人客户端这很简单,只需在配置中将connectAnywhere选项设置为true或false即可! 您可以让您的球型客户端连接...

    基于Flash的远程工业监控系统设计

    根据当前基于Web远程工业监控方案的不足,利用Flash的交互性强,本身导出的文件小,适合网络传输、利用AS(Action Script)提高了与其他语言...本系统的设计对基于Web远程工业监控提供了新的思路,具有实际的应用价值。

    vc++ 应用源码包_1

    主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈推荐。 自绘button 自绘...

    基于Flash的远程工业监控系统设计方案

    摘要:根据当前基于Web远程工业监控方案的不足,利用Flash的...本系统的设计对基于Web远程工业监控提供了新的思路,具有实际的应用价值。  目前,监控领域的产品普遍关注现场级别,即采用客户端/服务器(C/S)模式,

    vc++ 应用源码包_2

    主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈推荐。 自绘button 自绘...

    vc++ 应用源码包_6

    主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈推荐。 自绘button 自绘...

    vc++ 应用源码包_5

    主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈推荐。 自绘button 自绘...

    vc++ 应用源码包_3

    主要是CIocpSrv"伪类",实际上还是调用的DLL, IOCP完成端口 IP所在地查询器 jpeglib_demo 处理Jpeg图片。 KeyHook 键盘钩子,截获键盘信息。 Kugou7+UI 界面设计。学习界面的好实例,强烈推荐。 自绘button 自绘...

    通信与网络中的基于Flash的远程工业监控系统设计方案

    摘要:根据当前基于Web远程工业监控方案的不足,利用Flash的交互...本系统的设计对基于Web远程工业监控提供了新的思路,具有实际的应用价值。  目前,监控领域的产品普遍关注现场级别,即采用客户端/服务器(C/S)模

    网络NC

    整个系统的负荷被分布在世界各地的服务器所分担了,所以再不必考虑集中式服务器所要考虑的巨额成 本问题 2) 使用者的控制权大大加强了,因为服务器不是控制在某一个企业或集团的手里,所以不必担心会因为商业上的...

    PHP程序开发范例宝典III

    让你短时间内由一名菜鸟到高手绝对没问题! 由于权限有限,分3部份下载 PHP程序开发范例宝典 内容提要 《PHP程序开发范例宝典》全面介绍了应用PHP进行网站开发的各种技术和技巧。《PHP程序开发范例宝典》分为20章...

    打造Node.js全栈开发工程师

    四、最主流的非关系型数据库Mongodb:这部分内容主要是讲解了mongdb在实际项目中的使用。并会讲解一个基于bootstrap+express+mongodb实现一个包括用户管理、文章管理、查看留言、分页查询、 搜索、文件上传、pv留言...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    Google Android SDK开发范例大全(第3版)part2

     《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 目录  第1章 了解、深入、动手做  1.1...

    JAVA上百实例源码以及开源项目源代码

    (1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,...

    《Google Android SDK开发范例大全(第3版)》.pdf

     《google android sdk开发范例大全(第3版)》内容由android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合android的初学者和android的进阶程序开发者阅读参考。 目录 《google android sdk开发范例...

    Google Android SDK开发范例大全(第3版) 1/5

    《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK...

    Google Android SDK开发范例大全(第3版) 4/5

    《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK...

Global site tag (gtag.js) - Google Analytics