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 协议的实现.