首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > flex >

flex socket 与java通信碰到的有关问题

2012-10-28 
flex socket 与java通信碰到的问题?? 其实就是粘包问题了。??? 老实讲,到现在还是没搞明白SOCKET_DATA被触

flex socket 与java通信碰到的问题

?? 其实就是粘包问题了。

?

?? 老实讲,到现在还是没搞明白SOCKET_DATA被触发的底层原理,猜测是否与as的轮询机制有关,谁完全了解,还请不吝指教。

?

?? 目前遇到的情况有多个封包黏在一起触发,因此flex socket缓冲区中会存在多个封包的内容,此时在读取的时候就需要进行拆包。

?

?? 一般的做法都是在正式数据封包的前面多+4个字节,用来存放一个长度值,代表其后紧跟的数据包的字节长度。

?

?? 但我这次在Java端用的amf封装,正式的包头也被amf给封装了,取的数据不完整是解压不出来的,还苦恼了好久如何取的长度,其实一样的,在Java使用amf格式封装完数据包后,再在其前面+4个字节放置长度值,就可以了。

?

?? 当然,也有可能一个完整的数据包到达客户端后,SOCKET_DATA被触发了多次,这样每次socket缓冲区中的数据就是不完整的,直接解压不了的,这时应该自己设一个全局bytearray,作为一个缓存,如果长度不够,将字节流存放在这个bytearray中,与下次来的字节流进行续接,直到长度=需要的字节流长度时,再进行字节流的解压,这就是合包/并包了。

?

?? 最后还需要进行出错处理。

?

?? 还要再看看网络传输,网络层和应用层的机制。

热点排行