Java 请求和响应相互阻塞
我试图向服务器发送类似HTTP请求的内容,然后从服务器获取响应。此时,服务器正在读取我的请求,而客户端将不会关闭outputStream。这就是服务器无法将响应发送回客户端的原因。这有点像“死锁”。当我试图在客户端关闭()outputStream时,我在读取响应的行中遇到了一个异常,因为套接字连接已关闭。我如何解决这个问题?多谢各位 客户:Java 请求和响应相互阻塞,java,sockets,http,Java,Sockets,Http,我试图向服务器发送类似HTTP请求的内容,然后从服务器获取响应。此时,服务器正在读取我的请求,而客户端将不会关闭outputStream。这就是服务器无法将响应发送回客户端的原因。这有点像“死锁”。当我试图在客户端关闭()outputStream时,我在读取响应的行中遇到了一个异常,因为套接字连接已关闭。我如何解决这个问题?多谢各位 客户: File file = new File("C:\\Programing\\WebServer\\src\\main\\java\\Clie
File file = new File("C:\\Programing\\WebServer\\src\\main\\java\\Client\\testimg.bmp");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(out);
long length = file.length();
Files.copy(file.toPath(), out);
out.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder stringBuilder = new StringBuilder();
String s;
while ((s = reader.readLine())!=null)
stringBuilder.append(s);
System.out.println(stringBuilder.toString());
服务器端:
System.out.println("Handle started");
try {
DownloadingFile downloadingFile = new DownloadingFile();
downloadingFile.downloadFile(in);
writingResponse(out, "OK");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
在服务器端附加类中:
public class DownloadingFile {
public void downloadFile(InputStream in) throws IOException {
FileOutputStream outputStream = new FileOutputStream("C:\\Programing\\WebServer\\src\\main\\java\\Server\\Messages\\testingimg.bmp");
int c;
while ((c = in.read()) != -1) {
outputStream.write(c);
}
outputStream.flush();
System.out.println("Downloaded");
}
}
我找到了答案!
输出请求后,我必须调用
socket.shutdownOutput();
我找到了答案!
输出请求后,我必须调用
socket.shutdownOutput();