如何在Java中为BufferedReader设置动态buffersize?
我正在测试从客户端到服务器的数据流。它生成随机的双精度和整数并发送到服务器;服务器必须读取它们,直到用户停止为止 但它似乎总是在服务器读取了2426个数据后停止 客户:如何在Java中为BufferedReader设置动态buffersize?,java,sockets,streaming,size,buffer,Java,Sockets,Streaming,Size,Buffer,我正在测试从客户端到服务器的数据流。它生成随机的双精度和整数并发送到服务器;服务器必须读取它们,直到用户停止为止 但它似乎总是在服务器读取了2426个数据后停止 客户: while ((fromServer = in.readLine()) != null) { ... else { while(!bStop) {
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吗
谢谢,为了让回答者更容易,请填写粘贴代码中缺少的部分,以便它可以实际编译。这并不意味着要粘贴原始代码;把简单的东西放在那里。换句话说,不要给那些想要帮助的人带来不必要的负担。另外,既然你已经知道DataInputStream,你试过了吗?您还应该在客户端使用DataOutputStream。我使用BufferedReader和管道而不是套接字,计数上升到186086,没有任何问题。你犯了什么错误?粘贴缓冲区大小错误及其上面的所有内容。我使用tcp套接字进行了另一次尝试,使用和不使用buffersize参数。请发布导致问题的客户端和服务器的可运行代码。还要提到您的平台和java版本。客户端和服务器在同一子网上吗?如果没有,有多少啤酒花?使用跟踪路由。ping是否经常丢弃数据包?尝试在同一台计算机上运行客户端和服务器。感谢您的输入。我要试试烟斗。