我正在学习java,我遇到了一些插座问题。我开发了一个简单的客户端 - 服务器应用程序 - 那种敲敲敲,它执行4个步骤:套接字,BufferedReader.readline() - 为什么流没有准备好?
- 客户端发送一些信息给服务器
- 服务器临危他们并保存到文件
- 服务器返回给客户端一些其他的消息
- 客户临危他们,同时也可以保存的文档
问题出现在第4步:客户端没有收到消息,并且永远不会退出循环:
while ((inStr = in.readLine()) != null) {
writer.println(inStr);
}
其中是BufferedReader
类型:
try {
socket = new Socket(ipAddress, 4444);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
在服务器端发送消息:
try {
socket = srvSocket.accept();
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
...
out.println("test from server #1");
out.println("test from server #2");
在客户端我看着in.ready()
- 它返回false。在服务器端,我看到out.checkError()
- 它返回true;
我在做什么错 - 为什么是空的流?
任何帮助ia感谢! :)
有什么异常? – Tudor 2011-12-19 15:43:31
在写完行后尝试'out.flush()'。 – nos 2011-12-19 15:44:24
@Sergio:正如你所说,发送消息的服务器代码在哪里? – 2011-12-19 15:46:50