处理android 经典蓝牙发送文件时接收包的问题

本文详细介绍了一种基于Android系统的经典蓝牙文件传输方案,该方案支持发送端暂停操作及断点续传功能。具体实现中,客户端发送固定长度的数据包,包含文件标识等信息,并解决了socket缓存区溢出导致的丢包问题;服务端则通过定长包读取数据并进行包头判断,确保准确接收文件流。

  需求:android 经典蓝牙发送文件,发送端支持暂停操作(变态!!!!),还想要断点续传(更变态!!!)

      大致实现:

    client端发送定长包,文件首包包头(固定长度)包含此文件标示(名称,文件流总长度等),并且要处理好socket缓存区

溢出的问题,防止出现丢包。

  server端从socket读取数据时按照定长包读取,长度不够等下组数据来,长度长了截掉,每个数据流进行包头判断,前一文件未收完的情况下,收到包头数据流,就丢弃,开始接受新的文件流。

 

  case点:包头判断的过程:有两种方式:

      1.定长包,每个包都含有定长包头(流量浪费)

      2.只有首包头,包头中包含文件md5值(文件流中包含其md5,只存在理论上的可能)

转载于:https://www.cnblogs.com/yangmingyu/p/6928190.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值