请参阅下面的代码。
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}")
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我在浏览器上访问 127.0.0.1:3000,它会显示待处理状态。
但如果我删除“Stream read”行,它就会按预期工作。为什么?
rust ×1