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

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

大致实现:

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

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

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

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

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

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

时间: 2024-10-10 04:20:35

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

android 向服务器Get和Post请求的两种方式,android向服务器发送文件,自己组装协议和借助第三方开源

/** * @author [email protected] * @time 20140606 */ package com.intbird.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream

Android浏览器:httpclient发送请求时TCP发送带有多个Segments

Android浏览器在发送HTTP(get/post)请求时,将请求首部切成多个segment.抓包如下: iPhone5没有发现此现象. ...待完善...

Android调用Webservice发送文件

一服务器端C#这里有三个上传方法1.uploadFile( byte []bs, String fileName); PC机操作是没有问题2. uploadImage(String filename,String image); //android大于1M上传会出问题(内存溢出),把文件件转换为Base64字符串上传3. uploadResume(String filename, String image, int tag); //android可以传大文件 using System;using

Maven打包成Jar文件时依赖包的问题

我们项目中使用到第三方的库文件,这些jar库文件并没有放到Maven中央库上,导致我们需要在项目中自己配置使用.我们的两三个开发人员对Java都是很熟,因此在使用中遇到了一些问题,表现在:在本地中引入第三方jar包后,在Idea中进行相应设置后,可以调试运行了,但是用Docker打包上传到服务器后,运行时会提示找不到某些类的定义. 经查看这些找不到的类就是来自第三方库,那么问题有可能是第三方jar包的路径问题,或者是根本就没有打包进jar文件里面.我们可以去Docker容器内部查看jar文件,执

联想笔记本电脑蓝牙没有“发送文件”和“接受文件”选项的解决方法

今日不知是何原因联想笔记本自带的蓝牙显示驱动不存在,本想简单的安装一个联想官网蓝牙驱动能解决,可是结果却和想象不同. 驱动可以正常安装,并且可以正常在笔记本上显示出来正常接入的设备. 但是在右下角的蓝牙图标上点击鼠标右键却发现没有以前常用的"发送文件"和"接收文件"这两个选项.这以后岂不是没法收发文件了,比较郁闷. 由于以前是有的,但是本次是驱动丢失重新安装了联想的蓝牙驱动之后没法发送和接受文件,故此上网搜了一下是否有其他发送方式. 通过资料显示win7有一个叫fs

C#网络编程(订立协议和发送文件) - Part.4

转载自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Recei

C#网络编程(订立协议和发送文件)

C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Receive缩写),则分别从服务端接收文件Server01.jpg.Server02.jpg.Server03.

使用agsXMPP SDK向Openfire发送文件的注意事项

使用agsXMPP向Openfire发送文件,一直被service-unavailable错误困扰,详细错误如片段1-1所示.使用agsXMPP自带的Demo MiniClient项目,可以正常发送文件,但在自己的项目中却发送失败. 片段1-1 <iq xmlns="jabber:client" to="[email protected]/XmppDemo" id="agsXMPP_5" type="error">

Android 自定义广播发送和接收

android系统会发送许多系统级别的广播,比如屏幕关闭,电池电量低等广播.同样应用可以发起自定义“由开发者定义的”广播.广播是从一个应用内部向另一个应用发送消息的途径之一. BroadcastReceiver是一个可以监听和响应广播的组件.本文中,我们将会演示如何发送自定义广播以及如何通过编程和使用Manifest文件定义一个BroadcastReceiver来监听这一广播.我们最后只要调用sendBroadcast就可以发送广播信息了. 1,编写MyReceiver,MyReceiver代码