ash*_*him 13 java sockets io bufferedreader
我有一台服务器,最初这样做: -
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)
我的客户端发送以下序列:
问题是有时"foo"没有得到它的回应.它挂在了readLine().
readLine()使用提前读取服务器在服务器中缓存数据的可能性是多少?"foo"类正在变得饥饿?
如果我在客户端添加睡眠,它可以工作.但它永远有效的可能性是多少?
sleep(1000);如何解决问题?感谢这方面的任何帮助.
moj*_*ado 22
eee的解决方案非常有效.我试图从SMTP会话中读取输出,但它会阻止:
while ((response = br.readLine()) != null) {
...Do Stuff
}
Run Code Online (Sandbox Code Playgroud)
改为:
while (br.ready()) {
response = br.readLine();
...Do Stuff
}
Run Code Online (Sandbox Code Playgroud)
我可以读完一切就好了.br是一个BufferedReader对象,BTW.
第一个示例中已经存在数据BufferedReader(已从套接字读取,并且不再可从套接字获取),因此将BufferedReader第一个示例中创建的数据传递给读取应用程序特定消息的类,而不是创建新BufferedReader的插座。
| 归档时间: |
|
| 查看次数: |
23607 次 |
| 最近记录: |