Метод bind
Метод bind класса UdpSocket привязывает сокет
к заданному локальному адресу. Параметром метод принимает
адрес сокета, который нужно привязать - например, строку
вида "127.0.0.1:8080". Метод возвращает
Result с привязанным сокетом UdpSocket
в случае успеха или ошибку std::io::Error
в противном случае. После успешной привязки сокет готов
к приёму и отправке датаграмм.
Синтаксис
UdpSocket::bind(addr)
Пример
Давайте привяжем UDP-сокет к локальному адресу
"127.0.0.1:8080" и выведем локальный адрес сокета:
use std::net::UdpSocket;
fn main()
{
let socket = UdpSocket::bind("127.0.0.1:8080").unwrap();
println!("{:?}", socket.local_addr().unwrap());
}
Результат выполнения кода:
127.0.0.1:8080
Пример
Давайте привяжем сокет к порту 0, чтобы операционная
система автоматически выбрала свободный порт:
use std::net::UdpSocket;
fn main()
{
let socket = UdpSocket::bind("127.0.0.1:0").unwrap();
let addr = socket.local_addr().unwrap();
println!("{}", addr.port() != 0);
}
Результат выполнения кода:
true
Пример
Давайте попробуем привязать сокет к некорректному адресу и обработаем возникшую ошибку:
use std::net::UdpSocket;
fn main()
{
let res = UdpSocket::bind("invalid_addr");
match res
{
Ok(_) => println!("bound"),
Err(e) => println!("{}", e.kind()),
}
}
Результат выполнения кода:
InvalidInput