pub struct MulticastSocket { /* private fields */ }Implementations§
Source§impl MulticastSocket
impl MulticastSocket
Sourcepub fn all_interfaces(multicast_address: SocketAddrV4) -> Result<Self>
pub fn all_interfaces(multicast_address: SocketAddrV4) -> Result<Self>
Examples found in repository?
examples/mdns.rs (line 19)
4fn main() {
5 let mdns_multicast_address = SocketAddrV4::new([224, 0, 0, 251].into(), 5353);
6
7 // Validate that building with options works with the public API
8 let with_options = MulticastSocket::with_options(
9 mdns_multicast_address,
10 multicast_socket::all_ipv4_interfaces()
11 .expect("could not fetch all interfaces for options"),
12 multicast_socket::MulticastOptions {
13 ..Default::default()
14 },
15 )
16 .expect("validate that we are starting with options");
17 drop(with_options);
18
19 let socket = MulticastSocket::all_interfaces(mdns_multicast_address)
20 .expect("could not create and bind socket");
21
22 let data = vec![1, 2];
23 socket
24 .broadcast(&data)
25 .expect("could not broadcast message to ips being listened");
26
27 loop {
28 if let Ok(message) = socket.receive() {
29 dbg!(&message.interface);
30 dbg!(&message.origin_address);
31
32 let data = vec![9, 8, 7];
33 socket
34 .send(&data, &message.interface)
35 .expect("could not send data");
36 };
37 }
38}Sourcepub fn with_options(
multicast_address: SocketAddrV4,
interfaces: Vec<Ipv4Addr>,
options: MulticastOptions,
) -> Result<Self>
pub fn with_options( multicast_address: SocketAddrV4, interfaces: Vec<Ipv4Addr>, options: MulticastOptions, ) -> Result<Self>
Examples found in repository?
examples/mdns.rs (lines 8-15)
4fn main() {
5 let mdns_multicast_address = SocketAddrV4::new([224, 0, 0, 251].into(), 5353);
6
7 // Validate that building with options works with the public API
8 let with_options = MulticastSocket::with_options(
9 mdns_multicast_address,
10 multicast_socket::all_ipv4_interfaces()
11 .expect("could not fetch all interfaces for options"),
12 multicast_socket::MulticastOptions {
13 ..Default::default()
14 },
15 )
16 .expect("validate that we are starting with options");
17 drop(with_options);
18
19 let socket = MulticastSocket::all_interfaces(mdns_multicast_address)
20 .expect("could not create and bind socket");
21
22 let data = vec![1, 2];
23 socket
24 .broadcast(&data)
25 .expect("could not broadcast message to ips being listened");
26
27 loop {
28 if let Ok(message) = socket.receive() {
29 dbg!(&message.interface);
30 dbg!(&message.origin_address);
31
32 let data = vec![9, 8, 7];
33 socket
34 .send(&data, &message.interface)
35 .expect("could not send data");
36 };
37 }
38}Source§impl MulticastSocket
impl MulticastSocket
Sourcepub fn receive(&self) -> Result<Message>
pub fn receive(&self) -> Result<Message>
Examples found in repository?
examples/mdns.rs (line 28)
4fn main() {
5 let mdns_multicast_address = SocketAddrV4::new([224, 0, 0, 251].into(), 5353);
6
7 // Validate that building with options works with the public API
8 let with_options = MulticastSocket::with_options(
9 mdns_multicast_address,
10 multicast_socket::all_ipv4_interfaces()
11 .expect("could not fetch all interfaces for options"),
12 multicast_socket::MulticastOptions {
13 ..Default::default()
14 },
15 )
16 .expect("validate that we are starting with options");
17 drop(with_options);
18
19 let socket = MulticastSocket::all_interfaces(mdns_multicast_address)
20 .expect("could not create and bind socket");
21
22 let data = vec![1, 2];
23 socket
24 .broadcast(&data)
25 .expect("could not broadcast message to ips being listened");
26
27 loop {
28 if let Ok(message) = socket.receive() {
29 dbg!(&message.interface);
30 dbg!(&message.origin_address);
31
32 let data = vec![9, 8, 7];
33 socket
34 .send(&data, &message.interface)
35 .expect("could not send data");
36 };
37 }
38}Sourcepub fn send(&self, buf: &[u8], interface: &Interface) -> Result<usize>
pub fn send(&self, buf: &[u8], interface: &Interface) -> Result<usize>
Examples found in repository?
examples/mdns.rs (line 34)
4fn main() {
5 let mdns_multicast_address = SocketAddrV4::new([224, 0, 0, 251].into(), 5353);
6
7 // Validate that building with options works with the public API
8 let with_options = MulticastSocket::with_options(
9 mdns_multicast_address,
10 multicast_socket::all_ipv4_interfaces()
11 .expect("could not fetch all interfaces for options"),
12 multicast_socket::MulticastOptions {
13 ..Default::default()
14 },
15 )
16 .expect("validate that we are starting with options");
17 drop(with_options);
18
19 let socket = MulticastSocket::all_interfaces(mdns_multicast_address)
20 .expect("could not create and bind socket");
21
22 let data = vec![1, 2];
23 socket
24 .broadcast(&data)
25 .expect("could not broadcast message to ips being listened");
26
27 loop {
28 if let Ok(message) = socket.receive() {
29 dbg!(&message.interface);
30 dbg!(&message.origin_address);
31
32 let data = vec![9, 8, 7];
33 socket
34 .send(&data, &message.interface)
35 .expect("could not send data");
36 };
37 }
38}Sourcepub fn broadcast(&self, buf: &[u8]) -> Result<()>
pub fn broadcast(&self, buf: &[u8]) -> Result<()>
Examples found in repository?
examples/mdns.rs (line 24)
4fn main() {
5 let mdns_multicast_address = SocketAddrV4::new([224, 0, 0, 251].into(), 5353);
6
7 // Validate that building with options works with the public API
8 let with_options = MulticastSocket::with_options(
9 mdns_multicast_address,
10 multicast_socket::all_ipv4_interfaces()
11 .expect("could not fetch all interfaces for options"),
12 multicast_socket::MulticastOptions {
13 ..Default::default()
14 },
15 )
16 .expect("validate that we are starting with options");
17 drop(with_options);
18
19 let socket = MulticastSocket::all_interfaces(mdns_multicast_address)
20 .expect("could not create and bind socket");
21
22 let data = vec![1, 2];
23 socket
24 .broadcast(&data)
25 .expect("could not broadcast message to ips being listened");
26
27 loop {
28 if let Ok(message) = socket.receive() {
29 dbg!(&message.interface);
30 dbg!(&message.origin_address);
31
32 let data = vec![9, 8, 7];
33 socket
34 .send(&data, &message.interface)
35 .expect("could not send data");
36 };
37 }
38}Auto Trait Implementations§
impl Freeze for MulticastSocket
impl RefUnwindSafe for MulticastSocket
impl Send for MulticastSocket
impl Sync for MulticastSocket
impl Unpin for MulticastSocket
impl UnsafeUnpin for MulticastSocket
impl UnwindSafe for MulticastSocket
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more