Java socket接收缓存中多行数据数据的读取问题

已知在Java socket(TCP)接收的缓存中有多行数据,但是总行数不知道,如何来把缓存中的数据全部读出来,并且还不会报错;先说下我遇到的问题:是无法将其中的数据全部都读取出来,我用循环的话也会报错,原因你事先不知道其中有多少行的数据,所以我想知道具体的解决办法???谢谢了

先用输入流InputStream将文件内容读取到字节数组(长度为 1024)中,再用输出流OutputStream将字节数组中的数据写到目标设备
public void write(byte[] buffer, int offset, int count)
该方法第一个参数为:字节数组
第二个是:要写入的数据在数组中的起始位置 即:0
第三个是:写入的长度,即:1024追问

我这样写过,但是读入到数组中的话,它只会读第一行的数据,剩下的就不再读了

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-07-10
只有不断读,直到符合要求

要不然,就在数据中先告诉对方有多少数据

~
~
~
~追问

这也是一个方法,但是程序中已经写好了,是没有“end”校验位,也可以参考,谢谢了

java socket发送和接收多条数据的情况怎么解决
System.out.println("收到消息:"+message);} } 只有这样才能不断从发送端收到消息,这段代码只是给你一个提示,有问题给我留言,通常为了程序的合理性 最好把这段代码写进一个线程里面,这样更合理

javasocket.连接服务端第一次读取不到数据第二次开始
javasocket.连接服务端第一次读取不到数据第二次开始原因如下:1、socket通讯层要自己写及IO流不正确使用。遇到读取不到数据或者阻塞卡死现象或者数据读取不完整。2、请求和响应报文格式多变解析麻烦。前面两种格式都简单。有对应框架处理。其它格式一般都需要自己手动处理。

java的socket流的read问题
HTTP协议是有固定格式的,由Header + Body组成,你可以先去看看相关协议说明。读取时应该先通过连续2个换行符分割header和body,然后在header里查Content-Length,根据ContentLength才知道body到底有多长,这样你才能从流中把一个个http包分割出来。对于chunk模式,在最后会有一个长度为0的chunk标识,来指示...

java socket客户端接收不到大的数据
每个数据包有大小限制,大的数据会被强制拆分成小的数据包,造成你的数据不完整,造成客户端无法接收。解决的话,需要把你要传的大数据先拆分成一个一个的小数据包,然后客户端接收到后,把这些小数据包再根据报文协议逐个拼成一个完整的大数据。

java中socket不断接收数据问题
ObjectInputStream in=new ObjectInputStream(socket.getInputStream());MsgObject obj=(MsgObject)in.getObject();就能够得到一个消息类对象了。。不会的就追问下,我之前是这样做过的。方法二:如果你会json格式,那么就更加简单了,直接把你的消息放到json数组里面。。这种方法没试过,我近期使用json...

java socket编程 readline()读取问题,为啥在client端刚连接上就开始无限...
scan.nextLine();\/\/阻塞,排除是socket建立太慢导致的 String str=null;这两行删除,没用 str=br.readLine();这个改成 br=scan.readLine();然后你再试一下 顺便再说一下,这个程序我写过,我开始想的也是客户端发送的数据服务器端可以实时接收,但是我发现我错了,因为Scanner 的阻塞,如果客户端发送...

java socket 多线程通信 ,用测试工具连接不上
2,可能也就是SocketServer字符串输出缓冲区问题,有时候在做网络通讯的时候,在一些IDE集成开发环境里,你不去显示的在System.out.println()里面的字符串结尾加"\\n"的话,这写字符串就一直在缓冲区中,等应用程序退出了,或者接收端线程停止的时候,缓冲区中得内容才会显示出来。你在测试工具里发送的...

java socket多线程的问题?可以多个线程使用同一个socket吗?
可以写个demo试一下啊,应该是可以的,socket接收到的消息只能被其中一个线程接收。线程1 和2 接受到的肯定不是同一个消息。会有先后之分。看你怎么控制。比如从接收的消息是ABCD,那么这相当于一个资源。线程1和2在这里拿消息,拿到之后,socket里面就少了,比如线程1拿到AB,线程2拿到CD ...

java socket多文件传输问题
用多线程,每个线程创建一个socket连接,每个socket连接负责传输一个文件,服务端的serversocket每次accept一个socket连接,也建立一个新线程,该线程负责对应socket的文件传输 每个文件写入完毕的时候关闭输出流,建新文件后重新建立输出流用于写入

java socket输入流inputStream.read(byte[])方法一次读入多帧数据,也就...
因为inputStream.read(byte)是尽可能的读byte[]大小的数据,当你的服务端发送数据速度大于客户端读取数据的速度时,就会出现客户端读到多帧连在一起的报文。而这些发送数据,读取数据的速度是未知的。所以我们需要人为的来做一些调整。比如说每一帧作为一行写入Socket,客户端每次从socket读取一行。这样客户...

相似回答