小编ash*_*him的帖子

Socket,BufferedReader挂起在readLine()

我有一台服务器,最初这样做: -

BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (;;) {
  String cmdLine = br.readLine();
  if (cmdLine == null || cmdLine.length() == 0)
     break; 
  ...
}
Run Code Online (Sandbox Code Playgroud)

稍后它将套接字传递给另一个类"foo"此类等待特定于应用程序的消息.

 BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
 appCmd=br.readLine();
Run Code Online (Sandbox Code Playgroud)

我的客户端发送以下序列:

  • "谷仓"
  • "你怎么样?\n"
  • "\n"
  • "将它传递给foo \n"
  • "\n"

问题是有时"foo"没有得到它的回应.它挂在了readLine().

readLine()使用提前读取服务器在服务器中缓存数据的可能性是多少?"foo"类正在变得饥饿?

如果我在客户端添加睡眠,它可以工作.但它永远有效的可能性是多少?

  • "谷仓"
  • "你怎么样?\n"
  • "\n"
  • sleep(1000);
  • "将它传递给foo \n"
  • "\n"

如何解决问题?感谢这方面的任何帮助.

java sockets io bufferedreader

13
推荐指数
2
解决办法
2万
查看次数

标签 统计

bufferedreader ×1

io ×1

java ×1

sockets ×1