Rust 还有比在原始套接字上使用libc实现任意协议更好的方法吗?

Rust 还有比在原始套接字上使用libc实现任意协议更好的方法吗?,rust,network-programming,Rust,Network Programming,nix板条箱是libc的一个很好的包装器,用于处理原始套接字,但事实证明,它只支持那些套接字上的TCP和UDP协议。比如说,我想在原始套接字上使用ICMP——就像在中一样,我想在ICMP数据包中使用sendto,并在进入网络之前将其包装在IP报头+以太网报头中,就像标准的libc函数一样。有没有任何包装纸/板条箱支持这一点,而不是我自己去做丑陋的外国金融机构的东西?如果有一种方法可以使用nix的getprotobyname或类似的东西,那就太好了。Rust标准库目前没有原始套接字功能。现有的是指

nix板条箱是libc的一个很好的包装器,用于处理原始套接字,但事实证明,它只支持那些套接字上的TCP和UDP协议。比如说,我想在原始套接字上使用ICMP——就像在中一样,我想在ICMP数据包中使用
sendto
,并在进入网络之前将其包装在IP报头+以太网报头中,就像标准的libc函数一样。有没有任何包装纸/板条箱支持这一点,而不是我自己去做丑陋的外国金融机构的东西?如果有一种方法可以使用nix的
getprotobyname
或类似的东西,那就太好了。

Rust标准库目前没有原始套接字功能。现有的是指向
libpcap
的直接外国金融机构。如果您想通过标准库使用TCP或UDP之外的任何协议,您必须自己实现它,或者查看是否已经实现了它

使用:


Rust标准库目前没有原始套接字功能。现有的是指向
libpcap
的直接外国金融机构。如果您想通过标准库使用TCP或UDP之外的任何协议,您必须自己实现它,或者查看是否已经实现了它

使用:

你看了吗?你看了吗?
let mut handle = Device::lookup().unwrap().open().unwrap();

let data = &[0, 1, 2, 3, 5];

handle.sendpacket(data);