socket通信inputStream.read(byte)读取速度小于接收速度,导致多帧数据叠加在一起。

问题描述

在socket通信中,由于inputStream.read(byte)是尽可能的读byte[]大小的数据,当服务端发送数据速度大于客户端读取数据的速度时,就会出现客户端读到多帧连在一起的报文。而这些发送数据,读取数据的速度是未知的。怎么解决这个问题,服务器端不能改变,

解决方案

解决方案二:
想办法将读取的后续动作的耗时降低。比如读取动作只负责读取,读取的内容传给多线程进行处理。
解决方案三:
没用。。。。。
解决方案四:
想到了一个办法,把所有读的数据放到一起,不管每次读的是多少,放在所接收数据就放在一起了,这样就好处理了。。。
解决方案五:
将byte[]的长度设为1,这样每次只读一个字节,没有读到的就会缓存起来,不会出现多帧连在一起的现象

时间: 2024-03-27 17:43:50

socket通信inputStream.read(byte)读取速度小于接收速度,导致多帧数据叠加在一起。的相关文章

pen-如何读取显卡或显存中当前帧数据 (即我当前屏显示的数)?

问题描述 如何读取显卡或显存中当前帧数据 (即我当前屏显示的数)? 如何读取显卡或显存中当前帧数据 (即我当前屏显示的数)?最好还能读显存缓冲区里第二第三...帖数据. 解决方案 啥系统呢?如果是驱动可以配合修改,让驱动提供一个 IOCTRL 接口就可以了.

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

ZERO.前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所写,如果不当,还望指教. 一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那

Android Socket通信详解_Android

一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信.通过

Android开发之Socket通信传输简单示例

本文实例讲述了Android Socket通信传输实现方法.分享给大家供大家参考,具体如下: 1.开篇简介 Socket本质上就是Java封装了传输层上的TCP协议(注:UDP用的是DatagramSocket类).要实现Socket的传输,需要构建客户端和服务器端.另外,传输的数据可以是字符串和字节.字符串传输主要用于简单的应用,比较复杂的应用(比如Java和C++进行通信),往往需要构建自己的应用层规则(类似于应用层协议),并用字节来传输. 2.基于字符串传输的Socket案例 1)服务器端

详解Android的Socket通信、List加载更多、Spinner下拉列表_Android

Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信.通过建立socket连接,可为通

详解Android的Socket通信、List加载更多、Spinner下拉列表

Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信.通过建立socket连接,可为通

android通过socket通信实现客户端读取服务端的二进制数据,并展示在textview控件上

问题描述 android通过socket通信实现客户端读取服务端的二进制数据,并展示在textview控件上 客户端通过socket通信,完成读取服务端的二进制数据读取,并将数据显示在textview控件上,数据全为整型 解决方案 之前接触一些,但不是我我写的.JNI中C读取,生成Native方法.上层调用 解决方案二: 底层c来封装so文件调用socket API.上面Java调用so 解决方案三: ....java自己有socket啊,ls各位回答的什么意思.... 简单的socket网上教

Android socket通信,数据读取。

问题描述 Android socket通信,数据读取. public class ChatRoom extends ActionBarActivity { protected TextView tv_chat_show; protected EditText ed_chat_input; protected Button btn_send; protected ActionBarActivity that; protected String receiverMsg; protected Stri

socket通信-Socket通信 服务端还没有write完,客户端开始读取数据

问题描述 Socket通信 服务端还没有write完,客户端开始读取数据 Socket通信 服务端还没有write完,客户端开始读取数据,出现数据不完整的现象,如何保证客户端读取的数据完整性,切服务端发送一条客户端可以读取一条 解决方案 tcp连接等.