0
while (true) {
    loc = getLocationOnScreen();

    out.writeLong((long)loc.getX());
    out.writeLong((long)loc.getY());
    out.flush();

    i++;
    System.out.println(i);

}

このコードは約 3 秒間楽しく進行し、減速してから停止します。

iは約 で終了し16491、増加し続けることはありません。何が起きてる?

4

1 に答える 1

1

受信側で、次の値を読み取る前に、送信された値を使用して長いタスクを実行している可能性があるため、速度が低下しています。したがって、相手側がデータを読み取る速度は、データを送信する速度よりも小さくなります。これにより、反対側で受信バッファーがいっぱいになり、送信側で送信バッファーがいっぱいになります。最終的に、両方のバッファが完全にいっぱいになると、データの送信が停止します。

于 2013-02-17T17:39:15.397 に答える