Java套接字关闭HTTP 1.0连接

Java套接字关闭HTTP 1.0连接,java,http,parsing,sockets,webserver,Java,Http,Parsing,Sockets,Webserver,我正在编写一个小型web服务器,在解析请求时遇到问题。我将BufferedReader解析为LinkedList(这样我就可以根据发送的POST数据执行操作了。)我发现解释说缓冲区没有因为连接挂起而终止。我不知道如何关闭它 如何打开插座(以及如何关闭插座): httpHeader方法形成一个简单的字符串,第一行是“HTTP/1.0”,在本例中,下一行是“200OK”,最后是一个新行。发送的POST请求是HTTP 1.0 尽可能简洁,我的问题有两个:如何正确响应和关闭HTTP 1.0 POST请求

我正在编写一个小型web服务器,在解析请求时遇到问题。我将BufferedReader解析为LinkedList(这样我就可以根据发送的POST数据执行操作了。)我发现解释说缓冲区没有因为连接挂起而终止。我不知道如何关闭它

如何打开插座(以及如何关闭插座):

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


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

POST请求具有相关数据,并且必须附带指定该POST数据确切长度的内容长度标头

因此,您必须首先对所有HTTP头进行实数运算,解码内容长度,然后读取POST数据(与HTTP的经典做法一样,POST数据与头之间用空行分隔)

如果数据量不足,或者数据量过多,或者您甚至没有收到内容长度标题,那么您应该返回400

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