如何在 Rust 中发送源地址为 0.0.0.0 的 UDP 数据报?
How do I send a UDP datagram with source address 0.0.0.0 in Rust?
我正在用 Rust 编写 DHCP 客户端。
当没有已配置的接口时,客户端必须发送 DHCPDISCOVER 消息。 dhclient
等工具可以通过发送源地址为 0.0.0.0
的消息来做到这一点。
不幸的是,对于高级 Rust 原语,我无法调整 IP header。
我应该完全转向低级网络解决方案(libc、nix)还是有更好的方法?
绑定代码:
let socket = UdpBuilder::new_v4()?;
let socket = socket.bind(addr)?;
let socket = UdpSocket::from_std(socket, &Handle::default())?;
socket.set_broadcast(true)?;
UdpBuilder
来自 net2
板条箱。
UdpSocket
来自 tokio
板条箱。
addr
= SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0,0,0,0)), 68)
Rust 的高级 UDP 抽象是不可能的。
必须改用低级数据包生成器。例如,FreeBSD 上的 BPF 和 Mac OS.
我正在用 Rust 编写 DHCP 客户端。
当没有已配置的接口时,客户端必须发送 DHCPDISCOVER 消息。 dhclient
等工具可以通过发送源地址为 0.0.0.0
的消息来做到这一点。
不幸的是,对于高级 Rust 原语,我无法调整 IP header。
我应该完全转向低级网络解决方案(libc、nix)还是有更好的方法?
绑定代码:
let socket = UdpBuilder::new_v4()?;
let socket = socket.bind(addr)?;
let socket = UdpSocket::from_std(socket, &Handle::default())?;
socket.set_broadcast(true)?;
UdpBuilder
来自 net2
板条箱。
UdpSocket
来自 tokio
板条箱。
addr
= SocketAddr::new(IpAddr::V4(Ipv4Addr::new(0,0,0,0)), 68)
Rust 的高级 UDP 抽象是不可能的。
必须改用低级数据包生成器。例如,FreeBSD 上的 BPF 和 Mac OS.