1use tokio::io::{AsyncReadExt, AsyncWriteExt};
2use uni_stream::{
3 addr::{get_ip_addrs, set_custom_dns_server, ToSocketAddrs},
4 stream::{StreamProvider, TcpStreamProvider},
5};
6
7async fn custom_dns_tcp_stream_read<A: ToSocketAddrs + Send>(addr: A) {
9 let mut stream = TcpStreamProvider::connect(addr).await.unwrap();
11 stream
12 .write_all(b"GET /get HTTP/1.1\r\nHost: httpbin.org\r\nAccept: */*\r\n\r\n")
13 .await
14 .unwrap();
15 let mut buf = [0; 1024];
16 let n = stream.read(&mut buf).await.unwrap();
17 println!("response:{}", String::from_utf8_lossy(&buf[..n]));
18}
19
20async fn custom_dns_resolver(host: &str) {
22 println!("{host}:{:?}", get_ip_addrs(host).await.unwrap());
23}
24
25#[tokio::main]
26async fn main() {
27 set_custom_dns_server(&["8.8.8.8".parse().unwrap(), "233.5.5.5".parse().unwrap()]).unwrap();
29 custom_dns_tcp_stream_read("httpbin.org:80").await;
31 custom_dns_resolver("bilibili.com").await;
33}