HTTP WEB SERVERを構築しています。このプロジェクトでは、クライアントの要求を読み取るモジュールを 1 つ作成しましたが、これは非常に非効率的です。どうすればこのモジュールを非常に効率的にすることができますか。読み取り要求タスクを実行するコードを共有しています。下記参照、
あなたの提案を待っています。前もって感謝します。
私のコードの一部
final static int BUF_SIZE = 2048;
byte[] buf = new byte[BUF_SIZE];
private Socket s;
InputStream is = new BufferedInputStream(s.getInputStream());
int nread = 0, r = 0;
outerloop:
while (nread < BUF_SIZE) {
r = is.read(buf, nread, BUF_SIZE - nread);
if (r == -1) {
/* EOF */
return;
}
int i = nread;
nread += r;
for (; i < nread; i++) {
if (buf[i] == (byte) '\n' || buf[i] == (byte) '\r') {
/* read one line */
break outerloop;
}
}
}
編集番号 1
以下はクライアントからのリクエストで、is
GET / HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
これは特殊文字 \r または \n で終わります。
最適化された方法を使用して、これをバッファに入れるにはどうすればよいですか。