Skip to content

Commit

Permalink
add: examples for udp tcp and tls
Browse files Browse the repository at this point in the history
  • Loading branch information
FranciscaOrtegaG committed Dec 16, 2024
1 parent d0423ea commit 2359211
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 0 deletions.
36 changes: 36 additions & 0 deletions example/dotcp.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@

use std::net::{IpAddr, Ipv4Addr};
use std::time::Duration;
use tokio::runtime::Runtime;
use crate::client::tcp_connection::ClientTCPConnection;
use crate::message::DnsMessage;
use crate::client::client_error::ClientError;

fn main() -> Result<(), ClientError> {
let rt = Runtime::new().unwrap();


let server_ip = IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1));

let timeout = Duration::from_secs(5);


let tcp_connection = ClientTCPConnection::new(server_ip, timeout);


let dns_query = DnsMessage::new_query("example.com", crate::message::rrtype::Rrtype::A);


rt.block_on(async {
match tcp_connection.send(dns_query).await {
Ok(response) => {
println!("Respuesta recibida: {:?}", response);
}
Err(e) => {
eprintln!("Error al enviar la consulta DNS: {:?}", e);
}
}
});

Ok(())
}
32 changes: 32 additions & 0 deletions example/dotls.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
use std::net::{IpAddr, Ipv4Addr};
use std::time::Duration;
use tokio::runtime::Runtime;
use crate::client::tls_connection::ClientTLSConnection;
use crate::message::DnsMessage;
use crate::client::client_error::ClientError;

fn main() -> Result<(), ClientError> {
let rt = Runtime::new().unwrap();

let server_ip = IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1));

let timeout = Duration::from_secs(5);

let tls_connection = ClientTLSConnection::new(server_ip, timeout);

let dns_query = DnsMessage::new_query("example.com", crate::message::rrtype::Rrtype::A);

// Ejecutar la tarea asincrónica en el Runtime
rt.block_on(async {
match tls_connection.send(dns_query).await {
Ok(response) => {
println!("Respuesta recibida: {:?}", response);
}
Err(e) => {
eprintln!("Error al enviar la consulta DNS: {:?}", e);
}
}
});

Ok(())
}
36 changes: 36 additions & 0 deletions example/doudp.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
use std::net::{IpAddr, Ipv4Addr};
use std::time::Duration;
use tokio::runtime::Runtime;
use crate::client::udp_connection::ClientUDPConnection;
use crate::message::DnsMessage;
use crate::client::client_error::ClientError;

fn main() -> Result<(), ClientError> {
// Crear una instancia de Runtime para ejecutar tareas asincrónicas
let rt = Runtime::new().unwrap();

// Dirección IP del servidor DNS
let server_ip = IpAddr::V4(Ipv4Addr::new(192, 168, 0, 1));
// Tiempo de espera para la conexión
let timeout = Duration::from_secs(5);

// Crear una instancia de ClientUDPConnection
let udp_connection = ClientUDPConnection::new(server_ip, timeout);

// Crear una consulta DNS (esto es solo un ejemplo, ajusta según tu implementación)
let dns_query = DnsMessage::new_query("example.com", crate::message::rrtype::Rrtype::A);

// Ejecutar la tarea asincrónica en el Runtime
rt.block_on(async {
match udp_connection.send(dns_query).await {
Ok(response) => {
println!("Respuesta recibida: {:?}", response);
}
Err(e) => {
eprintln!("Error al enviar la consulta DNS: {:?}", e);
}
}
});

Ok(())
}

0 comments on commit 2359211

Please sign in to comment.