Метод set_write_timeout
Метод set_write_timeout класса TcpStream
устанавливает максимальное время ожидания
для операций записи в поток. Если запись
не завершится за указанный интервал, будет
возвращена ошибка с типом WouldBlock
или TimedOut. Параметром метод принимает
значение типа Option<Duration>: Some(duration)
задаёт таймаут, а None отключает его.
Метод возвращает результат типа io::Result<()>.
При успешной установке таймаута возвращается Ok(()),
при ошибке - Err.
Синтаксис
TcpStream::set_write_timeout(&self, timeout: Option<Duration>) -> io::Result<()>
Пример
Давайте установим таймаут записи в 5 секунд для TCP-соединения:
use std::net::TcpStream;
use std::time::Duration;
fn main()
{
let stream = TcpStream::connect("127.0.0.1:8080");
match stream
{
Ok(stream) =>
{
let res = stream.set_write_timeout(Some(Duration::from_secs(5)));
println!("{:?}", res);
},
Err(e) =>
{
println!("Connection failed: {}", e);
}
}
}
Результат выполнения кода:
Ok(())
Пример
Давайте отключим таймаут записи, передав None:
use std::net::TcpStream;
fn main()
{
let stream = TcpStream::connect("127.0.0.1:8080");
match stream
{
Ok(stream) =>
{
let res = stream.set_write_timeout(None);
println!("{:?}", res);
},
Err(e) =>
{
println!("Connection failed: {}", e);
}
}
}
Результат выполнения кода:
Ok(())
Пример
Давайте установим таймаут записи в 100 миллисекунд
и проверим его значение через метод write_timeout:
use std::net::TcpStream;
use std::time::Duration;
fn main()
{
let stream = TcpStream::connect("127.0.0.1:8080");
match stream
{
Ok(stream) =>
{
let _ = stream.set_write_timeout(Some(Duration::from_millis(100)));
let res = stream.write_timeout();
println!("{:?}", res);
},
Err(e) =>
{
println!("Connection failed: {}", e);
}
}
}
Результат выполнения кода:
Ok(Some(100ms))
Смотрите также
-
метод
set_read_timeout,
который устанавливает таймаут для операций чтения -
метод
write_timeout,
который возвращает текущий таймаут записи -
метод
read_timeout,
который возвращает текущий таймаут чтения -
метод
set_nonblocking,
который переводит поток в неблокирующий режим