xref: /webrtc/mdns/examples/mdns_server_query.rs (revision 5d8fe953)
1 use std::net::{Ipv4Addr, SocketAddr};
2 use tokio::sync::mpsc;
3 use webrtc_mdns::{config::*, conn::*};
4 
5 #[tokio::main]
main()6 async fn main() {
7     env_logger::init();
8 
9     log::trace!("server a created");
10 
11     let server_a = DnsConn::server(
12         SocketAddr::new(Ipv4Addr::new(0, 0, 0, 0).into(), 5353),
13         Config {
14             local_names: vec![
15                 "webrtc-rs-mdns-1.local".to_owned(),
16                 "webrtc-rs-mdns-2.local".to_owned(),
17             ],
18             ..Default::default()
19         },
20     )
21     .unwrap();
22 
23     let server_b = DnsConn::server(
24         SocketAddr::new(Ipv4Addr::new(0, 0, 0, 0).into(), 5353),
25         Config {
26             ..Default::default()
27         },
28     )
29     .unwrap();
30 
31     let (a, b) = mpsc::channel(1);
32 
33     tokio::spawn(async move {
34         tokio::time::sleep(tokio::time::Duration::from_secs(20)).await;
35         a.send(()).await
36     });
37 
38     let (answer, src) = server_b.query("webrtc-rs-mdns-1.local", b).await.unwrap();
39     println!("webrtc-rs-mdns-1.local answer = {answer}, src = {src}");
40 
41     let (a, b) = mpsc::channel(1);
42 
43     tokio::spawn(async move {
44         tokio::time::sleep(tokio::time::Duration::from_secs(20)).await;
45         a.send(()).await
46     });
47 
48     let (answer, src) = server_b.query("webrtc-rs-mdns-2.local", b).await.unwrap();
49     println!("webrtc-rs-mdns-2.local answer = {answer}, src = {src}");
50 
51     server_a.close().await.unwrap();
52     server_b.close().await.unwrap();
53 }
54