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

Метод recv

Метод recv класса UdpSocket принимает одну дейтаграмму из сокета и записывает её в переданный буфер. Параметром метод принимает изменяемую ссылку на буфер типа &mut [u8], в который будут записаны полученные данные. Метод возвращает количество принятых байтов в виде Result<usize, io::Error>. Если данные не помещаются в буфер, лишние байты отбрасываются.

Синтаксис

udp_socket.recv(&mut buf)

Пример

Давайте создадим UDP-сокет на стороне сервера, привяжем его к адресу "127.0.0.1:8080" и примем одну дейтаграмму от клиента:

use std::net::UdpSocket; fn main() { let socket = UdpSocket::bind("127.0.0.1:8080").unwrap(); let mut buf = [0u8; 1024]; let (amt, _) = socket.recv_from(&mut buf).unwrap(); let data = &buf[..amt]; println!("{:?}", String::from_utf8_lossy(data)); }

Если клиент отправит строку "abcde", то результат выполнения кода будет следующим:

"abcde"

Пример

Давайте рассмотрим полный пример с двумя сокетами: один отправляет данные, а другой принимает их через метод recv:

use std::net::UdpSocket; use std::thread; fn main() { let receiver = UdpSocket::bind("127.0.0.1:8080").unwrap(); let sender = UdpSocket::bind("127.0.0.1:0").unwrap(); thread::spawn(move || { thread::sleep(std::time::Duration::from_millis(100)); sender.send_to(b"12345", "127.0.0.1:8080").unwrap(); }); let mut buf = [0u8; 1024]; let amt = receiver.recv(&mut buf).unwrap(); println!("{}", amt); }

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

5

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

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