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 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