https://github.com/kiwiyou/craftping
Minecraft Server List Ping in Rust
https://github.com/kiwiyou/craftping
minecraft rust
Last synced: about 1 year ago
JSON representation
Minecraft Server List Ping in Rust
- Host: GitHub
- URL: https://github.com/kiwiyou/craftping
- Owner: kiwiyou
- License: mit
- Created: 2019-03-23T10:14:11.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-03-17T17:46:14.000Z (over 1 year ago)
- Last Synced: 2025-04-02T10:05:33.529Z (over 1 year ago)
- Topics: minecraft, rust
- Language: Rust
- Homepage:
- Size: 61.5 KB
- Stars: 36
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# craftping [](https://crates.io/crates/craftping) [](https://docs.rs/craftping)  [](https://github.com/kiwiyou/craftping)
craftping is a Rust library to ping Minecraft Servers.
## Usage
```toml
[dependencies]
craftping = "0.7.0"
```
You can synchronously ping to the server with `craftping::sync::ping`:
```rust
use std::net::TcpStream;
use craftping::sync::ping;
fn main() {
let hostname = "localhost";
let port = 25565;
let mut stream = TcpStream::connect((hostname, port)).unwrap();
let pong = ping(&mut stream, hostname, port).expect("Cannot ping server");
println!("Ping result: {:?}", pong);
}
```
`sync` module requires `sync` feature, which is enabled by default.
If you want to send pings asynchronously, you can use `craftping::tokio::ping` or `craftping::futures::ping`:
- `craftping::tokio::ping`
```rust
use tokio::net::TcpStream;
use craftping::tokio::ping;
#[tokio::main]
async fn main() {
let hostname = "localhost";
let port = 25565;
let mut stream = TcpStream::connect((hostname, port)).await.unwrap();
let pong = ping(&mut stream, hostname, port).await.expect("Cannot ping server");
println!("Ping result: {:?}", pong);
}
```
- `craftping::futures::ping`
```rust
use async_std::net::TcpStream;
use craftping::futures::ping;
#[async_std::main]
async fn main() {
let hostname = "localhost";
let port = 25565;
let mut stream = TcpStream::connect((hostname, port)).await.unwrap();
let pong = ping(&mut stream, hostname, port).await.expect("Cannot ping server");
println!("Ping result: {:?}", pong);
}
```
Note that `tokio` module requires `async-tokio` feature and `futures` `async-futures`.
Check [here](https://wiki.vg/Server_List_Ping#Response) for more information about ping result.
## Contributing
Pull requests are welcome. For major issues, please open the issue on this repository first.
## License
[MIT](https://choosealicense.com/licenses/mit/)