Java:使用DataOutputStream写入套接字会减慢,然后停止

时间:2013-02-17 17:00:47

标签: java sockets buffer send

while (true) {
    loc = getLocationOnScreen();

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

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

}

此代码将快速运行约3秒钟,然后停止运行。

i以大约16491结束,永远不会继续增加。这里发生了什么?

1 个答案:

答案 0 :(得分:1)

它正在放慢速度,因为在接收端,您可能会在读取下一个值之前使用您发送的值执行长任务。因此,另一方读取数据的速率小于您向其发送数据的速率。这样可以在另一侧填充接收缓冲区并在发送方发送缓冲区。最终,当两个缓冲区完全填满时,数据的传输就会停止。