请参见下面的代码.
fn listen() {
let listener = TcpListener::bind("127.0.0.1:3000").unwrap();
for stream in listener.incoming() {
let mut stream = stream.unwrap();
let mut data_buf = Vec::new();
stream.read_to_end(&mut data_buf).unwrap(); // Stream read
println!("{}", String::from_utf8(data_buf).unwrap());
stream.write_all(get_http_response().as_bytes()).unwrap();
}
}
fn get_http_response() -> String {
let status_line = "HTTP/1.1 200 OK";
let contents = "<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"utf-8\">
<title>Poda thendi!</title>
</head>
<body>
<h1>Poda thendi!</h1>
<p>Hi from Rust</p>
</body>
</html>";
let length = contents.len();
format!("{status_line}\r\nContent-Length: {length}\r\n\r\n{contents}")
}
现在,如果我在浏览器上访问127.0.0.1:3000,它会显示挂起状态.
但是如果我删除"Stream Read"行,它就会正常工作.为什么?