0

我正在写HTTP WEB SERVER。在该代码中,我使用字节数组来获取客户端请求,然后进行处理,但是当我调用不同的 RequestHandler 时,会出现性能问题,即Get,Head和其他。

我目前的代码是,

byte[] buffer = new byte[BUFFER_SIZE];
InputStream inputStream = new BufferedInputStream(client_socket.getInputStream());
PrintStream printStream = new PrintStream(client_socket.getOutputStream());

try {
     buffer_request_size = inputStream.read(buffer, 0, BUFFER_SIZE);

     if (buffer[0] == (byte) 'G'  && buffer[1] == (byte) 'E' && buffer[2] == (byte) 'T' && buffer[3] == (byte) ' ') {
            // CALL GETREQUESTHANDLER TO PROCESS CLIENT REQUEST
     }
     else if(buffer[0] == (byte) 'H' && buffer[1] == (byte) 'E' && buffer[2] == (byte) 'A' && buffer[3] == (byte) 'D' && buffer[4] == (byte) ' ') {
            // CALL HEADREQUESTHANDLER TO PROCESS CLIENT REQUEST
     }
     // SIMILARLY PROCESS OTHER HTTP METHODS IN THE SAME WAY
}
finally {
     inputStream.close();
     printStream.close();
}

但这不是很好的编码技巧,要一个一个地检查前三个字符是否是GET

是否有任何其他数据结构可以读取客户端请求,并检查第一个单词并告诉我们这个 GET 或 HEAD 或任何其他?

请帮助我改进上述代码块。

4

0 回答 0