Skip to content

ZenithInc/rs-ping

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rs-ping

一个使用 Rust 编写的简单 ping 工具实现(支持 macOS / Linux,IPv4,阻塞 I/O)。

✨ 功能特性

  • 使用 socket2 创建原始套接字发送 ICMP Echo Request
  • 支持指定:
    • 请求次数 (-c/--count)
    • 间隔时间 (-i/--interval)
    • 超时时间 (-W/--timeout)
    • 负载大小 (-s/--size)
  • 自动计算 ICMP 校验和
  • 匹配 id + seq 确保只处理属于本进程的回应
  • 支持 macOS/BSD 与 Linux 在 ICMP 报文结构上的差异(是否含 IP 头)
  • 代码中包含大量注释,适合学习网络编程与协议解析

📦 安装依赖

需要 Rust 1.70+,并在 macOS 或 Linux 下运行(需要原始套接字权限)。

cargo build

🚀 使用方法

# 构建
cargo build --release

# 使用 sudo 运行
sudo ./target/release/ping 8.8.8.8

# 或指定参数
sudo ./target/release/ping -c 5 -i 0.5 -W 2 -s 64 www.rust-lang.org

参数说明:

-c, --count <COUNT>        发送次数 [默认: 4]
-i, --interval <INTERVAL>  间隔(秒) [默认: 1]
-W, --timeout <TIMEOUT>    超时时间(秒) [默认: 3]
-s, --size <SIZE>          负载字节数 [默认: 56]

许可证

本项目采用 MIT License 协议,允许自由复制、修改、分发和商用,但需保留版权声明。

About

A ping implementation in Rust.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages