其实就是粘包问题了。
老实讲,到现在还是没搞明白SOCKET_DATA被触发的底层原理,猜测是否与as的轮询机制有关,谁完全了解,还请不吝指教。
目前遇到的情况有多个封包黏在一起触发,因此flex socket缓冲区中会存在多个封包的内容,此时在读取的时候就需要进行拆包。
一般的做法都是在正式数据封包的前面多+4个字节,用来存放一个长度值,代表其后紧跟的数据包的字节长度。
但我这次在Java端用的amf封装,正式的包头也被amf给封装了,取的数据不完整是解压不出来的,还苦恼了好久如何取的长度,其实一样的,在Java使用amf格式封装完数据包后,再在其前面+4个字节放置长度值,就可以了。
当然,也有可能一个完整的数据包到达客户端后,SOCKET_DATA被触发了多次,这样每次socket缓冲区中的数据就是不完整的,直接解压不了的,这时应该自己设一个全局bytearray,作为一个缓存,如果长度不够,将字节流存放在这个bytearray中,与下次来的字节流进行续接,直到长度=需要的字节流长度时,再进行字节流的解压,这就是合包/并包了。
最后还需要进行出错处理。
还要再看看网络传输,网络层和应用层的机制。
分享到:
相关推荐
Flex与Java Socket通信 很适用的例子啊
flex与JAVA的SOCKET通信,详细讲解flex与JAVA的SOCKET通信
2.重点解决安全策略问题:将flash发布为html格式后,本地访问页面后,一般可以与服务器进行socket通信;但是部署到tomcat服务器上后无法通信,这是因为flex安全策略引起的;需要在java服务端开通843权限策略,具体看...
Flex和java的socket通信 Flex和java的socket通信
flex+java的socket通信,文本中说明了文件构成,可实现基本的flex与java基于socket的通信
flex 和java 之间的相互通信
Flex和java的socket通信 连接 单向通信 多客户通信 一个简单的聊天室
Flex的AS3与Java的Socket通信
NULL 博文链接:https://xiegangthrille.iteye.com/blog/660219
NULL 博文链接:https://fengyunxiao.iteye.com/blog/462763
JsSocket 是使用js + flex + java开发的一套基于web的socket通信组件 主要解决大家在开发web项目时需要用到前台与后台时时通信时的问题,除了HTML5的WebSocket之外,之前大家使用的方法一般为:1、页面间断刷新;2、...
精通Flex 3.0――14.1.1 LCDS与服务端通信方式介绍 精通Flex 3.0――14.1.2 ActionScript与Java数据类型的转换 精通Flex 3.0――14.1.3 LCDS的内容结构 精通Flex 3.0――14.2 一个最基本的LCDS应用 精通Flex 3.0――...
该程序Server端用Java语言编写,Client端用FLEX4编写(可以方便转换成Java),所用数据库为MySQL,使用socket通信机制,可以实现简单的登录,密码验证,群聊、私聊等功能!
Flex3,AIR1.0(好像是) Socket通信
Merapi 最简单的例子。实现AIR与JAVA之间的通信 。也是通过Socket实现的通讯的默认端口是1234 官方下载。
2012-06-11 10:37 151,588 多线程Java Socket编程示例.html 2012-06-11 09:46 56,832 存储管理动态分区分配算法的模拟.doc 2012-06-11 09:45 32,389 完整的串口通信程序VC++源码.7z 2012-06-11 10:41 2,183,866 对...