我正在尝试使用以下代码从网络套接字读取一些数据 -
Socket s = new Socket(address, 502);
response = new byte[1024];
InputStream is = s.getInputStream();
int count = is.read(response, 0, 100);
数据量不大。它总共是 16 个字节。但是 read() 语句不会一口气读取所有数据。它只将 8 个字节的数据读入我的缓冲区。
我必须像这样多次调用 read() 才能读取数据 -
Socket s = new Socket(address, 502);
response = new byte[1024];
InputStream is = s.getInputStream();
int count = is.read(response, 0, 100);
count += is.read(response, count, 100-count);
为什么会这样?为什么 read() 不能一口气读取整个流?
请注意,数据不会逐渐到达。如果我在通过调用 Thread.sleep(2000) 读取数据之前等待 2 秒,则行为保持不变。