考虑我们在两个设备(A和B)之间有套接字连接。现在,如果我只写16个字节(大小并不重要,在这里)在侧插座的输出流(未的BufferedOutputStream)A 3倍或一般不止一次这样:java套接字是否按照发送的数据完全读取数据
OutputStream outputStream = socket.getOutputStream();
byte[] buffer = new byte[16];
OutputStream.write(buffer);
OutputStream.write(buffer);
OutputStream.write(buffer);
我读了使用套接字输入流(未的BufferedInputStream)与除例如1024发送缓冲区大的缓冲器在B侧数据:
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int read = inputStream.read(buffer);
现在我不知道如何将数据B侧接收?可能会累积起来,还是完全读取A发送的数据?换句话说,读取变量可能会超过16?
这一切都取决于时间。如果B在尝试读取时已收到所有输入,则它将读取全部16 * 3个字节。但是,如果到那时候只有其中一个或两个被发送,它将只能读取那些。 – Jon
如何在发送之前开始阅读? @Jon – Ali
@Ali:此方法阻塞,直到输入数据可用,检测到文件结尾或抛出异常。 – Anton