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

Метод 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

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

  • метод send_to,
    который отправляет данные по указанному адресу без соединения
  • метод connect,
    который соединяет сокет с удалённым адресом
  • метод recv,
    который принимает данные от соединённого адреса
  • метод recv_from,
    который принимает данные от любого адреса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить