Socket接收数据时,断包,延迟的情况的处理方法

思路就是从缓存流里得到多少字节,就写到一个容器里,直到全部数据都写进去后,就可以从这个容器里获取想要的数据了。

代码:

mysocket.addEventListener(ProgressEvent.SOCKET_DATA,socketDataHandler);
function socketDataHandler(event:ProgressEvent):void {
        var bytes:ByteArray =new ByteArray();
        while (mysocket.bytesAvailable) {
                mysocket.readBytes(bytes,0,mysocket.bytesAvailable);
        }
        try {
                var obj:Object=bytes.readObject();
        } catch (event:Error) {
                //
        }
}

转载于:https://my.oschina.net/u/263424/blog/633360

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用socket进行数据传输,可以通过连续发送和连续接收数据来实现大量数据的高效传输。 对于连续发送数据,可以使用循环来多次发送数据块,直到所有数据都被发送完成。在每次发送数据块之前,需要确保socket连接处于可写的状态,以防止数据发送超或发送失败。可以使用非阻塞模式的socket,通过设置socket的非阻塞属性,以避免长间等待socket可写。 对于连续接收数据,可以使用循环来多次接收数据块,直到接到期望的所有数据。在每次接收数据块之前,需要确保socket连接处于可读的状态,以防止数据接或接失败。可以使用非阻塞模式的socket,通过设置socket的非阻塞属性,以避免长间等待socket可读。 在进行连续发送和连续接收数据,需要注意以下几点: 1. 缓冲区大小:发送和接收数据,需要确保缓冲区的大小足够大,以避免数据溢出或截断的情况发生。 2. 数据分块:可以将大量数据分成较小的块进行发送和接,以降低网络传输的负载和延迟。 3. 错误处理:在发送和接收数据的过程中,可能会发生各种错误,如连接中断、超等。需要在代码中进行错误处理,保证程序的稳定性和可靠性。 总之,通过循环操作和合适的处理机制,可以实现socket的连续发送和连续接收数据,以满足大量数据的高效传输需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值