Метод send
Метод send класса UdpSocket отправляет
данные по адресу, с которым сокет был соединён ранее
с помощью метода connect. Параметром метод
принимает срез байтов &[u8], который нужно
отправить. Метод возвращает количество отправленных
байтов в виде Result<usize>.
Если сокет не был соединён с адресом назначения,
метод вернёт ошибку. Для отправки данных без
предварительного соединения используйте метод
send_to.
Синтаксис
udp_socket.send(buf)
Пример
Давайте создадим UDP-сокет, соединим его с локальным
адресом и отправим сообщение "abcde":
use std::net::UdpSocket;
fn main()
{
let socket = UdpSocket::bind("127.0.0.1:0").unwrap();
socket.connect("127.0.0.1:8080").unwrap();
let bytes_sent = socket.send(b"abcde").unwrap();
println!("{}", bytes_sent);
}
Результат выполнения кода:
5
Пример
Давайте отправим данные с одного сокета и примем их на другом сокете, чтобы убедиться в работе метода:
use std::net::UdpSocket;
fn main()
{
let receiver = UdpSocket::bind("127.0.0.1:0").unwrap();
let addr = receiver.local_addr().unwrap();
let sender = UdpSocket::bind("127.0.0.1:0").unwrap();
sender.connect(addr).unwrap();
sender.send(b"12345").unwrap();
let mut buf = [0; 5];
receiver.recv_from(&mut buf).unwrap();
let res = std::str::from_utf8(&buf).unwrap();
println!("{}", res);
}
Результат выполнения кода:
"12345"
Пример
Давайте проверим, что метод send возвращает
ошибку, если сокет не был соединён с адресом:
use std::net::UdpSocket;
fn main()
{
let socket = UdpSocket::bind("127.0.0.1:0").unwrap();
let res = socket.send(b"abcde");
println!("{}", res.is_err());
}
Результат выполнения кода:
true