本文作者:奶瓶先生 转自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就可能异常中断。好在一般的互动游戏中,不会有这种情况出现,如果需要瞬间接受大量命令(比如进入大厅刷新在线用户列表),可以尝试在逻辑部分将数据粘合成一个大的命令。
分享到:
相关推荐
在实际开发中,还需要考虑错误处理、多线程、数据编码解码等问题,以确保稳定可靠的通信。同时,由于Flash Player的安全策略,使用Flash Socket时可能需要设置跨域策略文件,以允许Flash应用程序访问其他域的资源。 ...
要开始使用FlashSocket.IO,开发者需要在Flex项目中引入库文件,并按照其提供的API文档设置连接。以下是一个基本的使用示例: ```actionscript import flashsocket.io.Socket; var socket:Socket = new Socket(...
5. **协议设计**:在实际应用中,客户端和服务器需要定义一套通信协议,包括命令格式、数据编码和错误处理机制。例如,可以使用JSON或自定义的二进制格式来封装命令和数据。 6. **示例文件**:"FlashServer"可能是...
在IT行业中,Flash AS3是一种广泛用于创建交互式应用程序、游戏和富互联网应用(RIA)的编程语言。Socket通信是网络编程的一个重要组成部分,它允许客户端和服务器之间进行双向通信。在AS3中,我们可以使用Socket类...
总结来说,Xcode与Flash通过Socket通信需要理解网络编程的基本原理,掌握如何在两端建立和管理Socket连接,同时要注意Flash的跨域安全策略。通过正确的配置和代码实现,可以实现流畅的数据交换,无论是在本地还是...
在实际应用中,C#服务器可能需要处理多个并发的Flash客户端连接。此时,可以使用C#的异步I/O或者线程池来提高服务器的并发性能。同时,为了保证数据的完整性,可以使用协议编码(如JSON或自定义二进制格式)来封装...
标题中的“flash as3/java socket 聊天室”指的是使用Adobe Flash ActionScript 3(AS3)语言和Java的Socket编程技术实现的一个在线聊天应用程序。这个应用允许用户通过网络进行实时通信,创建一个基本的聊天环境。...
在IT行业中,网络通信是至关重要的一个领域,而Flash Socket技术曾被广泛应用于网页上的实时数据传输,尤其是在处理流媒体和游戏等需要低延迟的应用场景。本知识点将深入讲解使用AS3(ActionScript 3)实现的Flash ...
在实际应用中,为了确保数据的完整性和安全性,可能还需要处理异常、编码解码、心跳机制、数据打包解包等问题。此外,跨域策略是Flash与Java Socket通信的一个重要考虑因素,因为浏览器的安全限制可能阻止跨域访问。...
在IT行业中,尤其是在Web开发领域,跨平台交互是常见的需求。本话题主要涉及如何通过Java后端与Flash前端之间的...在实际应用中,还需要考虑网络延迟、错误处理和安全问题,例如加密传输数据,确保用户数据的安全。
标题中的“python多人聊天服务器”指的是使用Python编程语言构建的能够...在实际操作中,可以运行ChatServer.py启动服务器,然后根据聊天程序协议.pdf编写客户端应用,与服务器进行互动,以此加深对Socket编程的理解。
### Flash AS3 Socket编程基础知识详解 #### 一、引言 在现代互联网应用开发中,实时通信技术变得越来越重要。而Socket编程作为一种实现客户端...希望这些基础知识能够帮助你在实际项目中更加高效地使用Socket编程。
尽管Flash已逐渐被淘汰,但在一些老版本的浏览器中,Flashsocket仍然是实现双向通信的途径。 6. **SocketNamespace** Socket.IO 允许你通过命名空间来组织不同的通信通道。SocketNamespace.html 可能详细介绍了...
在深入探讨Flash MX编程的深层次应用之前,我们首先需要理解Flash MX的基本概念。Flash MX是Adobe公司(前Macromedia)推出的一款强大的交互式矢量动画制作工具,它被广泛应用于网页设计、在线多媒体内容创建以及...
Flex中的Socket通信是一种基于TCP协议的低级别网络通信方式,它允许客户端应用程序与服务器进行双向数据传输。...实例代码如`ScoketClient.mxml`和`mySocket`可以帮助你更好地理解如何在实际项目中应用这些概念。
在实际开发中,需要注意兼容性问题,虽然现代浏览器对WebSocket的支持已经很好,但老版本浏览器可能不支持。这时可以使用Flash Socket或者Long Polling等技术作为备选方案。同时,安全问题也不容忽视,使用WebSocket...
【ActionScript3.0 Socket编程】是Flash平台中进行低级...总的来说,ActionScript3.0 Socket编程提供了强大的网络通信能力,但同时也需要开发者具备扎实的网络基础和良好的错误处理技巧,以确保应用的稳定性和安全性。
为了解决这个问题,“web-socket-js”库被开发出来,它利用Flash的Socket API来模拟WebSocket接口,从而在不支持WebSocket的浏览器上实现类似的功能。 这个库的核心是"websock.js"文件,它的工作原理是创建一个基于...
Socket编程在IT行业中是网络通信的基础,特别是在Windows Forms(Winform)应用开发中,它提供了一种高效且灵活的方式来进行客户端-服务器间的交互。本文将深入探讨“Socket简单通信winform”的实现,以及如何实现...
在实际应用中,还需要处理异常情况,如连接失败、超时、认证错误等,并确保数据传输的正确性和完整性。 总之,AS3的`Socket`类提供了一种直接与远程服务器进行TCP通信的能力,适合于需要自定义协议或低级别控制网络...