d
reader.read(&mut buff). Когда я пытаюсь отправить на сервер данные, которые равны или кратны BUFFER_SIZE, эта функция на последней итерации цикла намертво зависает. Я решил эту проблему при помощи fill_buf и consume, но всё же, почему зависает та функция? Из-за того, что она приспособлена только для EOF, которого нет в сокетах?fn handle_client(&self, mut stream: TcpStream) {
const BUFFER_SIZE: usize = 10;
let mut buff = [b'\0'; BUFFER_SIZE];
let mut received = Vec::new();
loop {
let length = match stream.read(&mut buff) /* вот тут зависает */ {
Ok(val) => val,
Err(_) => {
print_error("failed to read stream");
return;
}
};
received.extend_from_slice(&buff[..length]);
if length < BUFFER_SIZE {
break;
}
}
}
