读取命令在填充数据时是否检查缓冲区的大小,或者由于缓冲区不够大,数据是否有可能丢失?换句话说,如果有10个字节的数据可供读取,服务器是否会继续存储剩余的2个字节的数据,直到下次读取为止。
我只是以8为例来过度戏剧化。
InputStream stdout;
...
while(condition)
{
...
byte[] buffer = new byte[8];
int len = stdout.read(buffer);
}
答案 0 :(得分:3)
不,read()
不会因为没有为所有可用字节提供足够的空间而丢失任何数据。
目前尚不清楚“服务器”的含义,但第一次读取后,10字节消息的最后两个字节可用。 (或者,第一个read()
只读取前六个字节,剩下四个仍然可以读取。)