错误说套接字已关闭...我可以很好地发送到服务器,我可以很好地从服务器接收,但是一旦我尝试发送和接收,我总是会收到“套接字已关闭”错误。
服务器:
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String decodedString;
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
}
in.close();
OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream());
osw.write("return: "+decodedString);
osw.flush();
osw.close();
客户:
Socket c = new Socket("localhost",4040);
OutputStreamWriter osw = new OutputStreamWriter(c.getOutputStream());
osw.write("Test");
osw.flush();
osw.close();
BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));
String decodedString;
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
}
in.close();
c.close();
最佳答案
这是因为当您关闭其中一个流 (osw.close();
) 时 - socked 也会关闭。
来自 Socket.getOutputStream 的 javadoc:
Closing the returned {@link java.io.OutputStream OutputStream} will close the associated socket.
尝试刷新流,但仅在完成后才关闭它们。
关于java - BufferedReader、StreamWriter 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18163040/