Skip to main content

Rust 中 TCP/UDP 编程

在 Rust 中网络相关功能在 std::net 中, 通过 std::ioRead/Write 族协议读写 socket.

最主要的数据结构包括:

  • IpAddr: 表示 IPv4/v6 地址
  • SocketAddr: 表示通用的 socket 地址, 包含 IP 和端口号.
  • TcpListenerTcpStream: 用于 TCP 通信
  • UdpSocket: 用于 UDP 通信.

而目前标准库中没有提供运输层往下的 Socket 接口, 但可以使用:

  • libpnet: 提供对网络协议栈中更低层进行操作的 API.
  • nixlibc 去直接使用系统调用实现.

其他比较有用的非标准库 crate:

  • net2: 已弃用, 已归入 socket2 中.
  • socket2: 持续更新中
  • tokio: 社区推荐使用, 编写高性能的事件驱动非阻塞的异步网络程序.
  • ipnetwork: 处理 CIDR 记法的 IP 地址段.
  • mio: tokio 底层
  • TQUIC: TQUIC 是 QUIC 协议的实现.

简单的 TCP 客户端和服务器