考慮我們在兩個設備(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