Rust 中 TCP/UDP 编程
在 Rust 中网络相关功能在 std::net 中, 通过 std::io 的 Read/Write 族协议读写 socket.
最主要的数据结构包括:
IpAddr: 表示 IPv4/v6 地址SocketAddr: 表示通用的 socket 地址, 包含 IP 和端口号.TcpListener和TcpStream: 用于 TCP 通信UdpSocket: 用于 UDP 通信.
而目前标准库中没有提供运输层往下的 Socket 接口, 但可以使用:
libpnet: 提供对网络协议栈中更低层进行操作的 API.nix或libc去直接使用系统调用实现.
其他比较有用的非标准库 crate:
- net2: 已弃用, 已归入 socket2 中.
- socket2: 持续更新中
- tokio: 社区推荐使用, 编写高性能的事件驱动非阻塞的异步网络程序.
- ipnetwork: 处理 CIDR 记法的 IP 地址段.
- mio: tokio 底层
- TQUIC: TQUIC 是 QUIC 协议的实现.