mcquery-rs/examples/basic_query.rs

59 lines
1.6 KiB
Rust
Raw Permalink Normal View History

2021-01-08 19:42:24 +01:00
use mcquery::Query;
use std::{
time::Duration,
env
};
#[tokio::main]
async fn main() {
let buffer_size = match env::args().nth(3) {
Some(arg) => match arg.parse() {
Ok(size) => size,
Err(err) => {
eprintln!("Error parsing buffer size");
eprintln!("{}", err);
std::process::exit(1);
},
},
None => 128,
};
println!("Creating {}B buffer...", buffer_size);
let mut buffer = vec![0; buffer_size];
let address = (
match env::args().nth(1) {
Some(ip) => ip,
None => {
eprintln!("No server IP specified");
std::process::exit(1);
},
}, match env::args().nth(2).unwrap_or("25565".to_owned()).parse() {
Ok(port) => port,
Err(err) => {
eprintln!("Error parsing port");
eprintln!("{}", err);
std::process::exit(1);
},
}
);
println!("Connecting with {}:{}...", address.0, address.1);
if let Query::Basic(stat) = match Query::get_basic(
address,
Duration::from_secs(5),
&mut buffer
).await {
Ok(query) => query,
Err(err) => {
eprintln!("{}", err);
std::process::exit(1);
}
} {
println!("\nBasic query response:");
println!(" MOTD: {}", stat.motd);
println!(" Map: {}", stat.map);
println!(" Players: {}/{}", stat.num_players, stat.max_players);
println!(" Host: {}:{}", stat.ip, stat.port);
};
}