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

Метод 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,
    который задаёт таймаут для операций записи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить