Как исправить проблему при отключении клиента?
на днях я решил сделать простой tcp чат, в котором сервер получает сообщения и выводит их в консоль, а клиент сообщения отправляет. Но возникла проблема, при отключении клиента, происходит ошибка, в консоль сервера отправляется пустота, которая заставляет ползунок консоли двигаться вниз с бешенной скоростью. При переподключении клиента к серваку обратно и отправки данных, в окне принимающей стороны ничего не происходит. Как это исправить?
server.rs
use std::net::*;
use std::io::*;
fn main(){
let listener = TcpListener::bind("127.0.0.1:8081").unwrap();
for stream in listener.incoming(){
let mut stream = stream.unwrap();
loop{
let mut buf = vec![0u8;700];
stream.read(&mut buf);
buf.retain(|x| x != &0);
let string = std::str::from_utf8(&buf).unwrap();
println!("{string}")
}
}
}
client.rs
use std::io::*;
use std::net::TcpStream;
fn main(){
let mut stream = TcpStream::connect("127.0.0.1:8081").unwrap();
loop{
let mut message = String::new();
stdin().read_line(&mut message).unwrap();
stream.write(message.as_bytes());
}
}
Также интересно, как обработать отключение сервера от клиента. При этой ситуации, программа клиента паникует. Как сделать так, чтобы при отключении он просто вечным циклом пытался подключиться обратно?