59 lines
1.6 KiB
Rust
59 lines
1.6 KiB
Rust
|
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);
|
||
|
};
|
||
|
}
|