use tokio::io::{AsyncReadExt, AsyncWriteExt};
use uni_stream::addr::{get_ip_addrs, set_custom_dns_server, ToSocketAddrs};
use uni_stream::stream::{StreamProvider, TcpStreamProvider};
async fn custom_dns_tcp_stream_read<A: ToSocketAddrs + Send>(addr: A) {
let mut stream = TcpStreamProvider::from_addr(addr).await.unwrap();
stream
.write_all(b"GET /get HTTP/1.1\r\nHost: httpbin.org\r\nAccept: */*\r\n\r\n")
.await
.unwrap();
let mut buf = [0; 1024];
let n = stream.read(&mut buf).await.unwrap();
println!("response:{}", String::from_utf8_lossy(&buf[..n]));
}
async fn custom_dns_resolver(host: &str) {
println!("{host}:{:?}", get_ip_addrs(host).await.unwrap());
}
#[tokio::main]
async fn main() {
set_custom_dns_server(&["8.8.8.8".parse().unwrap(), "233.5.5.5".parse().unwrap()]).unwrap();
custom_dns_tcp_stream_read("httpbin.org:80").await;
custom_dns_resolver("bilibili.com").await;
}