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端桌面系统模拟