This is a small Rust library to execute ping
and parse the output across different platforms.
cargo add pinger
The ping()
function is the main entrypoint to the library. It returns an asynchronous stream of PingResult
values,
which can be either a Timeout
or a Pong(f32)
. Below is a simple ping
implementation:
```rust use futures::pin_mut; use futures::StreamExt; use pinger::ping;
async fn main() { let stream = ping("tomforb.es".tostring()) .expect("Error pinging"); pinmut!(stream); while let Some(value) = stream.next().await { println!("{:?}", value); } } ```
Sending ICMP messages across platforms is complicated and on some platforms this also requires root access to do.
Executing ping
and parsing the output is a somewhat simple cross-platform way of doing this.