Flex推出UDP支持后,相信很多开发Flex的朋友们都已经使用过了,我也是。但在使用过程中遇到了这样一个问题,就是当我们的数据包太大的时候,不适合一次性将数据包发送到接收端,因为数据包过大可能会造成丢包等坏结果。于是需要我们在发送或者接收的时候对数据包大小进行判断,如果大了,我们就将他分割开,然后一段一段的发送,接收端全部接收后再一一拼接起来。
public function SendFlexUDPData(aValue:XML):void { var mByteArray:ByteArray = new ByteArray(); var mValueData:ByteArray = new ByteArray(); var mPacketDataCount:int = 0; var mPacketMaxSize:int = 512; var mPocketPos:int = 0; var mPacketSendSize:int = 0; mValueData.writeUTFBytes(aValue.toString()); mValueData.position = 0; //发送总数据大小 mByteArray.clear(); mByteArray.position = 0; mByteArray.writeInt(mValueData.length); //发送数据主体 //分段数 mPacketDataCount = mValueData.length / mPacketMaxSize 1; for (var i:int = 0; i < mPacketDataCount; i ) { mByteArray.clear(); mByteArray.position = 0; //判断下一次需要发送的大小 mPacketSendSize = ((mValueData.length - mPocketPos) > mPacketMaxSize) ? mPacketMaxSize : (mValueData.length - mPocketPos); mByteArray = mProtocolHeadStorage.CreateData(true); mValueData.readBytes(mByteArray, mPocketPos, mPacketSendSize); mPocketPos = mPacketSendSize; mValueData.position = 0; } //发送完成 mByteArray.clear(); mByteArray.position = 0; }
彭亚欧个人博客原创文章,转载请注明出处
文章关键词:FlexUDP通信,Flex分割数据包,Flex融合数据包
文章固定链接:https://www.pengyaou.com/homeart/NTI=.html
上一篇 最近网站服务器异常说明
下一篇 Web端桌面系统模拟