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

Трейт ToSocketAddrs

Трейт ToSocketAddrs представляет собой абстракцию для типов, которые могут быть преобразованы в один или несколько socket-адресов. Он используется функциями и методами из модуля std::net, такими как TcpListener::bind, TcpStream::connect и UdpSocket::bind, позволяя передавать адреса в удобной форме. Метод to_socket_addrs возвращает итератор по значениям SocketAddr. Реализация трейта существует для типов SocketAddr, SocketAddrV4, SocketAddrV6, str, String, а также кортежей вида (&str, u16) и (String, u16).

Синтаксис

use std::net::ToSocketAddrs; fn to_socket_addrs(&self) -> Result<impl Iterator<Item = SocketAddr>>

Пример

Давайте преобразуем строку "127.0.0.1:8080" в socket-адрес:

use std::net::ToSocketAddrs; fn main() { let addrs: Vec<_> = "127.0.0.1:8080".to_socket_addrs().unwrap().collect(); println!("{:?}", addrs); }

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

[127.0.0.1:8080]

Пример

Давайте преобразуем кортеж ("127.0.0.1", 8080) в socket-адрес:

use std::net::ToSocketAddrs; fn main() { let addrs: Vec<_> = ("127.0.0.1", 8080).to_socket_addrs().unwrap().collect(); println!("{:?}", addrs); }

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

[127.0.0.1:8080]

Пример

Давайте преобразуем строку "localhost:3000" в список socket-адресов. Имя хоста может разрешаться в несколько адресов:

use std::net::ToSocketAddrs; fn main() { let addrs: Vec<_> = "localhost:3000".to_socket_addrs().unwrap().collect(); for addr in &addrs { println!("{}", addr); } }

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

127.0.0.1:3000 [::1]:3000

Пример

Давайте проверим, что происходит при передаче некорректного адреса:

use std::net::ToSocketAddrs; fn main() { let res = "invalid address".to_socket_addrs(); println!("{:?}", res.is_err()); }

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

true

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

  • структура SocketAddr,
    которая представляет socket-адрес
  • структура SocketAddrV4,
    которая представляет IPv4 socket-адрес
  • структура SocketAddrV6,
    которая представляет IPv6 socket-адрес
  • функция to_socket_addrs,
    которая преобразует значение в итератор socket-адресов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить