3 个不稳定版本
0.2.1 | 2024 年 3 月 27 日 |
---|---|
0.2.0 | 2024 年 3 月 27 日 |
0.1.0 | 2024 年 3 月 19 日 |
#1940 in 网络编程
22KB
425 代码行
socket-pktinfo
通过 socket2 crate 在跨平台上处理 IP_PKTINFO 和 IPV6_PKTINFO 的小型库。该 crate 的主要用例是确定 UDP 数据包是否发送到单播、广播或多播 IP 地址。兼容 Windows、Linux 和 macOS。
示例
use std::net::{Ipv4Addr, SocketAddrV4};
use socket2::{Domain, SockAddr};
use socket_pktinfo::PktInfoUdpSocket;
fn main() -> std::io::Result<()> {
let mut buf = [0; 1024];
let mut socket = PktInfoUdpSocket::new(Domain::IPV4)?;
socket.bind(&SocketAddrV4::new(Ipv4Addr::UNSPECIFIED, 8000).into())?;
match socket.recv(&mut buf) {//!
Ok((bytes_received, info)) => {
println!("{} bytes received on interface index {} from src {} with destination ip {}",
bytes_received, info.if_index, info.addr_src, info.addr_dst);
}
Err(e) => {
eprintln!("Error receiving packet - {}", e);
}
}
Ok(())
}
依赖项
~0.2–13MB
~95K SLoC