Метод connect_timeout
Метод connect_timeout класса TcpStream
устанавливает TCP-соединение с удалённым узлом,
но, в отличие от метода connect, позволяет
задать максимальное время ожидания. Если соединение
не будет установлено за указанный промежуток,
метод вернёт ошибку с типом
TimedOut. Первым параметром метод принимает
адрес удалённого узла, а вторым - значение
типа Duration, задающее таймаут.
Синтаксис
TcpStream::connect_timeout(addr, timeout)
Пример
Давайте попробуем установить соединение с адресом
"127.0.0.1:8080" с таймаутом в одну секунду
и обработаем возможную ошибку:
use std::net::TcpStream;
use std::time::Duration;
fn main()
{
let addr = "127.0.0.1:8080";
let timeout = Duration::from_secs(1);
match TcpStream::connect_timeout(&addr.parse().unwrap(), timeout)
{
Ok(stream) => println!("Connected: {:?}", stream),
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода при отсутствии сервера:
Error: Connection refused (os error 111)
Пример
Давайте установим соединение с заведомо недоступным адресом и таймаутом в одну миллисекунду, чтобы увидеть ошибку превышения времени ожидания:
use std::net::TcpStream;
use std::time::Duration;
fn main()
{
let addr = "10.255.255.1:80";
let timeout = Duration::from_millis(1);
match TcpStream::connect_timeout(&addr.parse().unwrap(), timeout)
{
Ok(stream) => println!("Connected: {:?}", stream),
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
Error: connection timed out
Смотрите также
-
метод
connect,
который устанавливает TCP-соединение без таймаута -
класс
TcpStream,
который представляет TCP-соединение -
метод
set_read_timeout,
который задаёт таймаут для операций чтения -
метод
set_write_timeout,
который задаёт таймаут для операций записи