gpt4 book ai didi

java - 请求和响应互相阻塞

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:24:07 25 4
gpt4 key购买 nike

我正在尝试向服务器发送类似 HTTP 请求的内容,然后从服务器获取响应。此时服务器读取我的请求,而客户端不会关闭 outputStream。这就是服务器无法将响应发送回客户端的原因。它类似于“死锁”。当我尝试在客户端关闭() outputStream 时,我在读取响应的行中遇到异常,因为套接字连接已关闭。我该如何解决这个问题?谢谢。

客户:

        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();

关于java - 请求和响应互相阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46963869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com