代码之家  ›  专栏  ›  技术社区  ›  hedgar2017

如何发送源地址为0.0.0.0的rust UDP数据报?

  •  2
  • hedgar2017  · 技术社区  · 7 年前

    我正在写一个生锈的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 回复  |  直到 6 年前
        1
  •  0
  •   hedgar2017    6 年前

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

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