我正在學習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