Rust 为什么在背对背的println和print语句之间会出现停顿?
我正在使用标准库Rust 为什么在背对背的println和print语句之间会出现停顿?,rust,Rust,我正在使用标准库net模块编写一个简单的HTTP请求: use std::io::prelude::*; use std::net; fn main() -> std::io::Result<()> { let request = b"GET / HTTP/1.1 Host: localhost:8080 "; let mut response = String::new(); print!("Connecting..."); let
net
模块编写一个简单的HTTP请求:
use std::io::prelude::*;
use std::net;
fn main() -> std::io::Result<()> {
let request =
b"GET / HTTP/1.1
Host: localhost:8080
";
let mut response = String::new();
print!("Connecting...");
let mut stream = net::TcpStream::connect("127.0.0.1:8080")
.expect("Cannot connect to server");
println!("Connected!");
print!("Writing...");
stream.write(request)
.expect("Error writing");
println!("Written!");
print!("Reading...");
stream.read_to_string(&mut response)
.expect("Error reading");
println!("Read!");
println!("\nResponse:\n{}", response);
Ok(())
}
当我运行程序时,在打印write之间会有一两秒钟的停顿代码>和读取…
。当似乎没有什么东西可以暂停执行时,为什么会出现这种暂停
服务器输出:
/:5.168ms
锈蚀量:
正在连接…已连接!
写……写!//在EOL这里暂停!
读…读!
答复:
HTTP/1.1200ok
X-Powered-By:Express
内容类型:text/html;字符集=utf-8
内容长度:2
ETag:W/“2-eoX0dku9ba8cNUXvu/DyeabcC+s”
日期:2018年12月6日星期四格林尼治标准时间22:32:47
连接:保持活力
好啊
stdout
通常是行缓冲的,这意味着它将您写入的内容存储在缓冲区中,直到看到换行符为止。所以在println之前你不会看到任何东西!(“读!”)代码>打印换行符
如果要在此之前显示内容,则需要
就这样。。谢谢你的帮助!
const express = require('express')
const app = express()
const port = 8080
app.get('/', (req, res) => {
console.time('/')
res.send('ok')
console.timeEnd('/')
})
app.listen(port, () => console.log(`Server on ${port}`))
use std::io; // for io::stdout
...
print!("Reading...");
io::stdout().flush()?;