Chapter 3. TCP and UDP Using Rust
Being a system programming language, the Rust Standard Library has support for interacting with the network stack. All the networking-related functionality is located in the std::net
namespace; reading and writing to sockets also uses Read
and Write
traits from std::io
. Some of the most important structures here are IpAddr
, which represents a generic IP address that can either be v4 or v6, SocketAddr
, which represents a generic socket address (a combination of an IP and a port on a host), TcpListener
and TcpStream
for communicating over TCP, UdpSocket
for UDP, and more. Currently, the standard library does not provide any APIs to deal with the network stack at a lower level. While this might change in the future, a number of crates fill that gap. The most important of these is libpnet
, which provides a set of APIs for lower-level networking.
Some other important crates for networking are net2
and socket2
. These were meant to be incubators for APIs that might...