Использование std :: net :: UdpSocket со строковым URL - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу отправить сообщение по протоколу udp.У меня есть такой URL: http://torrent.ubuntu.com:6969/announce.

Но в документации и во всех примерах, которые я видел, метод bind принимает только IP-адрес и порт.

Возможно преобразовать адрес URL?

1 Ответ

0 голосов
/ 22 апреля 2019

Функции bind работают со всем, что реализует ToSocketAddrs.

. Из документации вы можете использовать строку имени хоста / порта с этой чертой:

Создание итератора SocketAddr из имени хоста:

use std::net::{SocketAddr, ToSocketAddrs};

// assuming 'localhost' resolves to 127.0.0.1
let mut addrs_iter = "localhost:443".to_socket_addrs().unwrap();
assert_eq!(addrs_iter.next(), Some(SocketAddr::from(([127, 0, 0, 1], 443))));
assert!(addrs_iter.next().is_none());

// assuming 'foo' does not resolve
assert!("foo:443".to_socket_addrs().is_err());

Однако ссылка http://torrent.ubuntu.com:6969/announce является URL-адресом HTTP , икрайне редко использовать UDP с HTTP, но если сервер действительно прослушивает UDP, вы можете подключиться к нему с помощью UdpSocket::bind("torrent.ubuntu.com:6969").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...