byte[] message = ...
Socket socket = ...
DataOutputStream dOut = new DataOutputStream(socket.getOutputStream());
dOut.write(message); //#1
... //other code
让我们假设机器 1(使用上面的代码)试图向试图从机器 1 读取字节的机器 2 发送一些东西。
根据 TCP,如果机器 2 还没有成功读取从上面发送的数据,我可以说第 1 行之后的代码不会执行吗?
但是在什么时候,我可以说机器 2 已经读取了数据并且第 1 行之后的代码将执行?它发生在操作系统级别还是应用程序级别?例如,机器 2 操作系统将在机器 1 执行writeByte
命令/语句后立即缓冲来自机器 1 的消息,因此机器 2 将向机器 1 发出信号以继续执行第 1 行?
readByte
或者如果 Java 应用程序在应用程序级别执行命令/语句,机器 2 只会向机器 1 发出信号以继续?
如果整个接收过程发生在操作系统级别,我们如何控制用于缓存传入数据的缓冲区大小(在机器 2 中)?