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