РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1121 of 1245 menu

Метод set_read_timeout

Метод set_read_timeout задаёт ограничение по времени для операций чтения из TCP-соединения. Если данные не будут получены в течение указанного времени, операция чтения завершится ошибкой с типом WouldBlock или TimedOut. Параметром метод принимает значение типа Option<Duration>: если передать None, то таймаут будет снят, а если Some(duration) - установлено соответствующее ограничение. Метод возвращает Result<(), Error>.

Синтаксис

TcpStream::set_read_timeout(&self, dur: Option<Duration>) -> Result<(), Error>

Пример

Давайте установим таймаут чтения в 5 секунд для соединения с сервером:

use std::net::TcpStream; use std::time::Duration; fn main() { let stream = TcpStream::connect("127.0.0.1:8080").unwrap(); stream.set_read_timeout(Some(Duration::from_secs(5))).unwrap(); println!("read timeout is set"); }

Результат выполнения кода:

"read timeout is set"

Пример

Давайте снимем таймаут чтения, передав None:

use std::net::TcpStream; fn main() { let stream = TcpStream::connect("127.0.0.1:8080").unwrap(); stream.set_read_timeout(None).unwrap(); println!("read timeout is removed"); }

Результат выполнения кода:

"read timeout is removed"

Пример

Давайте установим таймаут чтения в 100 миллисекунд и попробуем прочитать данные из соединения:

use std::net::TcpStream; use std::io::Read; use std::time::Duration; fn main() { let mut stream = TcpStream::connect("127.0.0.1:8080").unwrap(); stream.set_read_timeout(Some(Duration::from_millis(100))).unwrap(); let mut buf = [0u8; 128]; match stream.read(&mut buf) { Ok(n) => println!("read {} bytes", n), Err(e) => println!("error: {}", e), } }

Результат выполнения кода:

"error: Resource temporarily unavailable (os error 11)"

Смотрите также

  • метод read_timeout,
    который возвращает текущий таймаут чтения
  • метод set_write_timeout,
    который устанавливает таймаут для операций записи
  • метод write_timeout,
    который возвращает текущий таймаут записи
  • метод set_nonblocking,
    который переключает соединение в неблокирующий режим
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить