2 个版本

0.1.1 2024年6月12日
0.1.0 2024年3月17日

#2102网络编程

MIT 许可证

28KB
630

ping-async

这个 crate 可以在 Windows 和 macOS 上异步发送无特权 ICMP 回显请求并接收回显响应。在 Linux 上,它需要 net.ipv4.ping_group_range sysctl 参数以允许无特权用户创建 ICMP 套接字。

在 Windows 上,它使用 IcmpSendEcho2ExIcmp6SendEcho2 win32 API。在 macOS 和 Linux 上,它使用 tokio 的帮助来使用 ICMP 套接字。由于后者的异步性质,时间精度可能会受到系统负载的影响。

示例

$ cargo run --example ping 1.1.1.1
Reply from 1.1.1.1: status = Success, time = 8.133ms
Reply from 1.1.1.1: status = Success, time = 8.92ms
Reply from 1.1.1.1: status = Success, time = 10.653ms
Reply from 1.1.1.1: status = Success, time = 8.456ms

$ cargo run --example ping 2606:4700:4700::1111
Reply from 2606:4700:4700::1111: status = Success, time = 8.454ms
Reply from 2606:4700:4700::1111: status = Success, time = 9.307ms
Reply from 2606:4700:4700::1111: status = Success, time = 9.056ms
Reply from 2606:4700:4700::1111: status = Success, time = 9.408ms

依赖关系

~0.7–40MB
~600K SLoC