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 の OS は、マシン 1 がwriteByte
コマンド/ステートメントを実行した直後にマシン 1 からのメッセージをバッファリングするため、マシン 2 はマシン 1 にライン #1 を続行するように信号を送ります。
readByte
または、マシン 2 は、Java アプリケーションがアプリケーション レベルでコマンド/ステートメントを実行する場合にのみ、マシン 1 に続行するように通知しますか?
受信プロセス全体が OS レベルで発生する場合、(マシン 2 で) 受信データをキャッシュするために使用されるバッファー サイズをどのように制御できますか?