Метод join_multicast_v4
Метод join_multicast_v4 класса UdpSocket
подключает UDP-сокет к группе многоадресной рассылки
IPv4. Параметром метод принимает адрес группы
multiaddr типа Ipv4Addr и адрес
сетевого интерфейса interface типа
Ipv4Addr, через который сокет будет
присоединяться к группе. Метод возвращает
Result<(), Error>: при успешном подключении
возвращается Ok(()), а при ошибке -
Err.
Подключение к группе многоадресной рассылки позволяет
сокету получать пакеты, отправленные на указанный
групповой адрес. Для приёма таких пакетов сокет
должен быть привязан к соответствующему адресу
и порту с помощью метода bind.
Синтаксис
socket.join_multicast_v4(multiaddr, interface)
Пример
Давайте создадим UDP-сокет, привяжем его к адресу
"0.0.0.0:0" и подключимся к группе
многоадресной рассылки "224.0.0.1" через
интерфейс "0.0.0.0":
use std::net::{UdpSocket, Ipv4Addr};
fn main()
{
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
let multiaddr = Ipv4Addr::new(224, 0, 0, 1);
let interface = Ipv4Addr::new(0, 0, 0, 0);
let res = socket.join_multicast_v4(multiaddr, interface);
println!("{:?}", res);
}
Результат выполнения кода:
Ok(())
Пример
Давайте попробуем подключиться к группе многоадресной рассылки с некорректным адресом и посмотрим, как метод сообщит об ошибке:
use std::net::{UdpSocket, Ipv4Addr};
fn main()
{
let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
let multiaddr = Ipv4Addr::new(0, 0, 0, 0);
let interface = Ipv4Addr::new(0, 0, 0, 0);
let res = socket.join_multicast_v4(multiaddr, interface);
println!("{:?}", res);
}
Результат выполнения кода:
Err(Os { code: 22, kind: InvalidInput, message: "Invalid argument" })