我现在写一个HTTP服务器和我有从套接字读取问题。 我的问题是, inputStream
从客户端永远不会结束,并保持阅读,直到客户端关闭。 我知道,客户端不会关闭与服务器的连接发送HTTP请求之后。 我怎样才能退出while loop
,当客户端发送的所有请求数据(即头+体)。
while (in.hasNextLine()) {
String line = in.nextLine();
if (line.equals("")){ // last line of request header is blank
break; // quit while loop when last line of header is reached
} else {
request = request + line + "\n";
}
}
从你们读意见,回答之后,这是我想出了,
is = incoming.getInputStream();
os = incoming.getOutputStream();
in = new Scanner(is);
out = new DataOutputStream(os);
RequestHandler rh = new RequestHandler();
int length = 0;
while (in.hasNextLine()) {
String line = in.nextLine();
if (line.equals("")) { // last line of request message
// header is a
// blank line
break; // quit while loop when last line of header is
// reached
}
if (line.startsWith("Content-Length: ")) { // get the
// content-length
int index = line.indexOf(':') + 1;
String len = line.substring(index).trim();
length = Integer.parseInt(len);
}
request = request + line + "\n";
}
byte[] body = new byte[length];
int i = 0;
while (i < length) {
byte b = in.nextByte();
body[i] = b;
i++;
}
但是,我还是不明白有关字节读取。 我可以写我的代码来读取到-1,但是如果没有EOF和客户端不打烊连接仍然停留。