如何在Rust中发送源地址为0.0.0.0的UDP数据报?

时间:2018-07-20 13:00:07

标签: sockets networking rust udp dhcp

我正在用Rust编写DHCP客户端。

在没有配置的接口时,客户端必须发送DHCPDISCOVER消息。像dhclient这样的工具可以通过发送源地址为0.0.0.0的消息来做到这一点。

不幸的是,对于高级Rust原语,我无法调整IP标头。

我应该完全转向低级网络解决方案(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)

1 个答案:

答案 0 :(得分:0)

Rust的高级UDP抽象是不可能的。

必须改用低级数据包生成器。例如,FreeBSD和Mac OS上的BPF。