gpt4 book ai didi

Java 套接字关闭 HTTP 1.0 连接

转载 作者:行者123 更新时间:2023-12-01 15:36:22 24 4
gpt4 key购买 nike

我正在编写一个小型网络服务器,并且在解析请求时遇到问题。我将 BufferedReader 解析为 LinkedList(以便我可以根据发送的 POST 数据执行操作。)我发现 this answer解释由于连接处于打开状态而缓冲区未终止。我不知道如何关闭它。

我如何打开套接字(以及我如何关闭它):

            Socket connectionSocket = serverSocket.accept();
InetAddress client = connectionSocket.getInetAddress();

System.out.println(client.getHostName() + " connected to server.");

BufferedReader input = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream(), "UTF-8"));

DataOutputStream output = new DataOutputStream(connectionSocket.getOutputStream());

output.writeUTF(httpHeader(200));

httpHandler(input, output);

connectionSocket.close();

httpHeader 方法形成一个简单的字符串,第一行是“HTTP/1.0”,在本例中,下一行是“200 OK”,末尾是一个新行。发送的 POST 请求是 HTTP 1.0。

尽可能简洁,我的问题有两个:如何正确响应和关闭 HTTP 1.0 POST 请求/套接字?

最佳答案

POST 请求具有关联数据,并且必须附有 Content-Length header ,指定该 POST 数据的确切长度。

因此,您必须首先真实所有 HTTP header ,解码 Content-Length,然后读取 POST 数据(就像 HTTP 的经典做法一样,用空行与 header 分隔)。

如果数据量不够,数据太多,您甚至没有收到 Content-Length header ,那么您应该返回 400。

关于Java 套接字关闭 HTTP 1.0 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8782410/

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