Java 缓冲类和发送/接收数据

Java 缓冲类和发送/接收数据,java,bufferedreader,bufferedwriter,Java,Bufferedreader,Bufferedwriter,在下面的问题中,是由缓冲类处理的字节使得文件被隐式地分割成更小的块,还是一次发送完所有字节 while循环分块读写。while循环分块读写。。自年以来,源已更改。还有,时间不早了,我意识到我的问题毫无意义,所以请忽略:)。简而言之,BufferedOutputStream在发送端一次性发送所有字节(没有什么特别之处),BufferedOutputStream用于在每次读取时在接收端累积字节。@James P:否。BufferedOutputStream以其自身缓冲区大小的块发送字节,Buffer

在下面的问题中,是由缓冲类处理的字节使得文件被隐式地分割成更小的块,还是一次发送完所有字节


while循环分块读写。

while循环分块读写。

。自年以来,源已更改。还有,时间不早了,我意识到我的问题毫无意义,所以请忽略:)。简而言之,BufferedOutputStream在发送端一次性发送所有字节(没有什么特别之处),BufferedOutputStream用于在每次读取时在接收端累积字节。@James P:否。BufferedOutputStream以其自身缓冲区大小的块发送字节,BufferedInputStream以其自身缓冲区大小的块读取字节。那么,客户端和服务器之间实际发生了什么(请参阅发布的答案)?在发送端有
out.write(mybytearray,0,mybytearray.length)
BufferedOutputStream
),接收端有
is.read(aByte)
(假设is是
BufferedInputStream
)。
BufferedOutputStream
以块的形式发送数据的速度是否与
InputStream
在另一端读取数据的速度一样快?我理解或多或少缓冲的想法,但我从来没有真正想过它们如何相互作用。@James P:TCP堆栈在发送方有一个每个套接字发送缓冲区,在接收方有一个每个套接字接收缓冲区。写入操作只是写入发送缓冲区,在发送缓冲区已满时阻塞。TCP从该缓冲区异步写入网络。读取仅从读取缓冲区读取,在其为空时阻塞。如果两个缓冲区都已满,则表示读取器未读取,这将导致发送器阻塞。所有这些都远远低于Java的水平。感谢EJP的解释。这毕竟不是一个愚蠢的问题:)没错。自年以来,源已更改。还有,时间不早了,我意识到我的问题毫无意义,所以请忽略:)。简而言之,BufferedOutputStream在发送端一次性发送所有字节(没有什么特别之处),BufferedOutputStream用于在每次读取时在接收端累积字节。@James P:否。BufferedOutputStream以其自身缓冲区大小的块发送字节,BufferedInputStream以其自身缓冲区大小的块读取字节。那么,客户端和服务器之间实际发生了什么(请参阅发布的答案)?在发送端有
out.write(mybytearray,0,mybytearray.length)
BufferedOutputStream
),接收端有
is.read(aByte)
(假设is是
BufferedInputStream
)。
BufferedOutputStream
以块的形式发送数据的速度是否与
InputStream
在另一端读取数据的速度一样快?我理解或多或少缓冲的想法,但我从来没有真正想过它们如何相互作用。@James P:TCP堆栈在发送方有一个每个套接字发送缓冲区,在接收方有一个每个套接字接收缓冲区。写入操作只是写入发送缓冲区,在发送缓冲区已满时阻塞。TCP从该缓冲区异步写入网络。读取仅从读取缓冲区读取,在其为空时阻塞。如果两个缓冲区都已满,则表示读取器未读取,这将导致发送器阻塞。所有这些都远远低于Java的水平。感谢EJP的解释。这毕竟不是一个愚蠢的问题:)