AS3.0 Socket读取原理分析


AS3.0中使用Socket接收数据我们必须使用ProgressEvent.SOCKET_DATA事件。这个事件在帮助文档中是这样描述的——在套接字接收到数据后调度。对于很多熟悉AS3 的人来说通常会有一种误解,认为这个事件是接收一次产生一次。服务器发送了10次,那么就会有10次ProgressEvent.SOCKET_DATA产生。
而事实却并非如此,我和同事做过一次尝试,服务器发送了20000次数据而rogressEvent.SOCKET_DATA事件只产生了2000多次。
这是为什么?我感觉SOCKET_DATA事件有点像一个计时器,按照一定频率检查SOCKET中是否有数据,如果有则产生一次事件。当然这只是我的一种猜测,没有在官方文档中找到这个说明。
对于AS3.0 Socket的理解,我觉得可以用一个啤酒桶来比喻。
 
[url=http://hiphotos.baidu.com/mr%5Fziqiang/pic/item/6538ecfa5c506dc4b48f312f.jpg]

[/url]
它是一个容器,从服务器接收的数据都会按照先后顺序放在这个容器中。这个容器有自己最大的容量(没有具体测过容量),同时也有当前的容量(Socket.bytesAvailable)。当我们从socket中读取一个数据时就好像打开啤酒桶下方的水龙头倒出一杯啤酒,Socket.bytesAvailable会减少。当数据读完之后,Socket.bytesAvailable也就变为0。
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/4690.html

你可能感兴趣的:(html,socket,Flash)