我正在尝试使用Rust编写一个回声服务器。
use std::net::{TcpStream, TcpListener};
use std::io::prelude::*;
fn main() {
let listener = TcpListener::bind("0.0.0.0:8000").unwrap();
for stream in listener.incoming() {
let stream = stream.unwrap();
println!("A connection established");
handle_connection(stream);
}
}
fn handle_connection(mut stream: TcpStream) {
let mut buffer = [0; 512];
stream.read(&mut buffer).unwrap();
println!("Request: {}", String::from_utf8_lossy(&buffer[..]));
stream.write(&buffer[..]).unwrap();
stream.flush().unwrap();
}
使用nc localhost 8000
的第一个请求按预期工作,但随后的请求没有。我做错什么了吗?问题出在服务器如何从客户端读取请求上吗?尽管服务器端没有错误。
我通过在终端键入数据来发送它们:
$ nc localhost 8000
hi
hi
hello
# no response
# on pressing enter
Ncat: Broken pipe.
nc
发送数据的?您遇到了什么确切的错误?您的代码在我的电脑上似乎可以工作。 - loganfsmyth