如何在Java中为BufferedReader设置动态缓冲区大小?

发布于 2024-12-29 02:35:25 字数 1212 浏览 0 评论 0原文

我正在测试从客户端到服务器的数据流。它生成随机双精度数和整数并将它们发送到服务器;服务器必须读取它们,直到用户停止它。

但似乎总是在服务器读取到第2426个数据时停止。

客户端:

    while ((fromServer = in.readLine()) != null) 
    {

        ...                     
        else 
        {
          while(!bStop)
          {
                ins++;
                dUserInput = rRandom.nextDouble();
                out.println(ins +", " + dUserInput);   
          }
           .....   
         }

服务器:

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()), buffersize); 

while ((inputLine = in.readLine()) != null) {
   ...
 System.out.println("recv> " + inputLine);
}

输出:

....
recv> 2421, 0.791175426456302
recv> 2422, 0.1424806550326747
recv> 2423, 0.32742036805153263
recv> 2424, 0.07852028188946414
recv> 2425, 0.8438837153559341
recv> 2426, 0.8548109748012377

我从 BufferedReader() 中删除了 ',buffersize',即使客户端的布尔值 'bStops' 仍然为 false,它也会在第 2426 个数据处停止。我想知道是否存在缓冲区大小问题。

如果客户端在第 2426 个数据处停止后断开连接,则服务器输出将显示第 2426 个数据之后的大量数据和错误消息。其中之一与缓冲区大小有关。

有什么想法吗?我必须使用 DataInputStream 而不是 BufferedReader 吗?

谢谢,

I am testing data streaming from client to server. It generates random doubles and integers and send them to server; the server must read them until user stops it.

But it seems to be always stopped around 2426th data has been read by the server.

The client:

    while ((fromServer = in.readLine()) != null) 
    {

        ...                     
        else 
        {
          while(!bStop)
          {
                ins++;
                dUserInput = rRandom.nextDouble();
                out.println(ins +", " + dUserInput);   
          }
           .....   
         }

The server:

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()), buffersize); 

while ((inputLine = in.readLine()) != null) {
   ...
 System.out.println("recv> " + inputLine);
}

The output:

....
recv> 2421, 0.791175426456302
recv> 2422, 0.1424806550326747
recv> 2423, 0.32742036805153263
recv> 2424, 0.07852028188946414
recv> 2425, 0.8438837153559341
recv> 2426, 0.8548109748012377

I removed ',buffersize' from BufferedReader(), it stops at 2426th data even if the boolean 'bStops' of the client is still false. I wonder there is a buffer size problem.

If the client is disconnected after stopped at the 2426th data, the server output is showing much data after the 2426th and error messages. One of them is about buffer size.

Any ideas? Do I have to use DataInputStream instead of BufferedReader?

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文