[−][src]Crate socket2
Utilities for creating and using sockets.
The goal of this crate is to create and use a socket using advanced configuration options (those that are not available in the types in the standard library) without using any unsafe code.
This crate provides as direct as possible access to the system's
functionality for sockets, this means no effort to provide
cross-platform utilities, no extra goodies, no creature comforts. It is up
to the user to know how to use sockets when using this crate. If you don't
know how to create a socket using libc/system calls then this crate is not
for you. Most, if not all, functions directly relate to the equivalent
system call with no error handling applied, so no handling errors such as
EINTR
. As a result using this crate can be a little wordy, but it should
give you maximal flexibility over configuration of sockets.
Examples
use std::net::SocketAddr; use socket2::{Socket, Domain, Type}; // Create a TCP listener bound to two addresses. let socket = Socket::new(Domain::IPV6, Type::STREAM, None)?; let address: SocketAddr = "[::1]:12345".parse().unwrap(); socket.bind(&address.into())?; socket.set_only_v6(false)?; socket.listen(128)?; let listener = socket.into_tcp_listener(); // ...
Features
This crate has a single feature all
, which enables all functions even ones
that are not available on all OSes.
Structs
Domain | Specification of the communication domain for a socket. |
Protocol | Protocol specification used for creating sockets via |
SockAddr | The address of a socket. |
Socket | Newtype, owned, wrapper around a system socket. |
Type | Specification of communication semantics on a socket. |