套接字,缓冲读取器在 readLine() 处挂起
2022-09-02 09:35:55
我有一个服务器,最初这样做:-
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (;;) {
String cmdLine = br.readLine();
if (cmdLine == null || cmdLine.length() == 0)
break;
...
}
稍后它将套接字传递给另一个类“foo”该类等待特定于应用程序的消息。
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
appCmd=br.readLine();
我的客户端发送以下序列:
- “酒吧\n”
- “你好吗?\n”
- “\n”
- “将其传递给 foo\n”
- “\n”
问题是有时“foo”没有得到回应。它挂在 .readLine()
在服务器中使用提前读取缓冲数据并且“foo”类挨饿的可能性有多大?readLine()
如果我在客户端添加睡眠,它可以工作。但是,它永远有效的可能性有多大?
- “酒吧\n”
- “你好吗?\n”
- “\n”
sleep(1000);
- “将其传递给 foo\n”
- “\n”
如何解决问题?感谢您在这方面的任何帮助。