pub struct TcpSocket { /* private fields */ }net only.Expand description
A TCP socket that has not yet been converted to a TcpStream or
TcpListener.
Implementations§
Source§impl TcpSocket
impl TcpSocket
Sourcepub fn set_keepalive(&self, keepalive: bool) -> Result<(), Error>
pub fn set_keepalive(&self, keepalive: bool) -> Result<(), Error>
Sets value for the SO_KEEPALIVE option on this socket.
Sourcepub fn keepalive(&self) -> Result<bool, Error>
pub fn keepalive(&self) -> Result<bool, Error>
Gets the value of the SO_KEEPALIVE option on this socket.
Sourcepub fn set_reuseaddr(&self, reuseaddr: bool) -> Result<(), Error>
pub fn set_reuseaddr(&self, reuseaddr: bool) -> Result<(), Error>
Allows the socket to bind to an in-use address.
Sourcepub fn reuseaddr(&self) -> Result<bool, Error>
pub fn reuseaddr(&self) -> Result<bool, Error>
Retrieves the value set for SO_REUSEADDR on this socket.
Sourcepub fn set_reuseport(&self, reuseport: bool) -> Result<(), Error>
Available on Unix and non-Solaris and non-illumos and non-Cygwin only.
pub fn set_reuseport(&self, reuseport: bool) -> Result<(), Error>
Allows the socket to bind to an in-use port. Only available for supported unix systems.
Sourcepub fn reuseport(&self) -> Result<bool, Error>
Available on Unix and non-Solaris and non-illumos and non-Cygwin only.
pub fn reuseport(&self) -> Result<bool, Error>
Allows the socket to bind to an in-use port. Only available for supported unix systems.
Sourcepub fn set_send_buffer_size(&self, size: u32) -> Result<(), Error>
pub fn set_send_buffer_size(&self, size: u32) -> Result<(), Error>
Sets the size of the TCP send buffer on this socket.
On most operating systems, this sets the SO_SNDBUF socket option.
Sourcepub fn send_buffer_size(&self) -> Result<u32, Error>
pub fn send_buffer_size(&self) -> Result<u32, Error>
Returns the size of the TCP send buffer for this socket.
On most operating systems, this is the value of the SO_SNDBUF socket
option.
Sourcepub fn set_recv_buffer_size(&self, size: u32) -> Result<(), Error>
pub fn set_recv_buffer_size(&self, size: u32) -> Result<(), Error>
Sets the size of the TCP receive buffer on this socket.
On most operating systems, this sets the SO_RCVBUF socket option.
Sourcepub fn recv_buffer_size(&self) -> Result<u32, Error>
pub fn recv_buffer_size(&self) -> Result<u32, Error>
Returns the size of the TCP receive buffer for this socket.
On most operating systems, this is the value of the SO_RCVBUF socket
option.
Sourcepub fn set_zero_linger(&self) -> Result<(), Error>
pub fn set_zero_linger(&self) -> Result<(), Error>
Sets a linger duration of zero on this socket by setting the SO_LINGER
option.
Sourcepub fn linger(&self) -> Result<Option<Duration>, Error>
pub fn linger(&self) -> Result<Option<Duration>, Error>
Reads the linger duration for this socket by getting the SO_LINGER
option.
Sourcepub fn set_nodelay(&self, nodelay: bool) -> Result<(), Error>
pub fn set_nodelay(&self, nodelay: bool) -> Result<(), Error>
Sets the value of the TCP_NODELAY option on this socket.
If set, this option disables the Nagle algorithm. This means that segments are always sent as soon as possible, even if there is only a small amount of data. When not set, data is buffered until there is a sufficient amount to send out, thereby avoiding the frequent sending of small packets.
Sourcepub fn nodelay(&self) -> Result<bool, Error>
pub fn nodelay(&self) -> Result<bool, Error>
Gets the value of the TCP_NODELAY option on this socket.
For more information about this option, see set_nodelay.
Sourcepub fn tclass_v6(&self) -> Result<u32, Error>
Available on Android or DragonFly BSD or FreeBSD or Fuchsia or Linux or macOS or NetBSD or OpenBSD or Cygwin only.
pub fn tclass_v6(&self) -> Result<u32, Error>
Gets the value of the IPV6_TCLASS option for this socket.
For more information about this option, see set_tclass_v6.
Sourcepub fn set_tclass_v6(&self, tclass: u32) -> Result<(), Error>
Available on Android or DragonFly BSD or FreeBSD or Fuchsia or Linux or macOS or NetBSD or OpenBSD or Cygwin only.
pub fn set_tclass_v6(&self, tclass: u32) -> Result<(), Error>
Sets the value for the IPV6_TCLASS option on this socket.
Specifies the traffic class field that is used in every packet sent from this socket.
§Note
This may not have any effect on IPv4 sockets.
Sourcepub fn tos_v4(&self) -> Result<u32, Error>
Available on neither Fuchsia nor Redox OS nor Solaris nor illumos nor Haiku.
pub fn tos_v4(&self) -> Result<u32, Error>
Gets the value of the IP_TOS option for this socket.
For more information about this option, see set_tos_v4.
Sourcepub fn set_tos_v4(&self, tos: u32) -> Result<(), Error>
Available on neither Fuchsia nor Redox OS nor Solaris nor illumos nor Haiku.
pub fn set_tos_v4(&self, tos: u32) -> Result<(), Error>
Sets the value for the IP_TOS option on this socket.
This value sets the type-of-service field that is used in every packet sent from this socket.
§Note
- This may not have any effect on IPv6 sockets.
- On Windows,
IP_TOSis only supported on Windows 8+ or Windows Server 2012+.
Sourcepub fn device(&self) -> Result<Option<Vec<u8>>, Error>
Available on Android or Fuchsia or Linux only.
pub fn device(&self) -> Result<Option<Vec<u8>>, Error>
Gets the value for the SO_BINDTODEVICE option on this socket
Returns the interface name of the device to which this socket is bound.
Sourcepub fn bind_device(&self, interface: Option<&[u8]>) -> Result<(), Error>
Available on Android or Fuchsia or Linux only.
pub fn bind_device(&self, interface: Option<&[u8]>) -> Result<(), Error>
Sets the value for the SO_BINDTODEVICE option on this socket
If a socket is bound to an interface, only packets received from that
particular interface are processed by the socket. Note that this only
works for some socket types, particularly AF_INET sockets.
If interface is None or an empty string it removes the binding.
Sourcepub fn local_addr(&self) -> Result<SocketAddr, Error>
pub fn local_addr(&self) -> Result<SocketAddr, Error>
Gets the local address of this socket.
Sourcepub fn take_error(&self) -> Result<Option<Error>, Error>
pub fn take_error(&self) -> Result<Option<Error>, Error>
Returns the value of the SO_ERROR option.
Sourcepub async fn bind(&self, addr: SocketAddr) -> Result<(), Error>
pub async fn bind(&self, addr: SocketAddr) -> Result<(), Error>
Binds the socket to the given address.
Sourcepub async fn connect(self, addr: SocketAddr) -> Result<TcpStream, Error>
pub async fn connect(self, addr: SocketAddr) -> Result<TcpStream, Error>
Establishes a TCP connection with a peer at the specified socket address.
The TcpSocket is consumed. Once the connection is established, a
connected TcpStream is returned. If the connection fails, the
encountered error is returned.
On Windows, the socket should be bound to an address before connecting.
Sourcepub async fn listen(self, backlog: i32) -> Result<TcpListener, Error>
pub async fn listen(self, backlog: i32) -> Result<TcpListener, Error>
Converts the socket into a TcpListener.
backlog defines the maximum number of pending connections that are
queued by the operating system at any given time. Connections are
removed from the queue with TcpListener::accept. When the queue
is full, the operating system will start rejecting connections.
Sourcepub fn from_std_stream(stream: TcpStream) -> Result<TcpSocket, Error>
pub fn from_std_stream(stream: TcpStream) -> Result<TcpSocket, Error>
Converts a std::net::TcpStream into a TcpSocket. The provided
socket must not have been connected prior to calling this function. This
function is typically used together with crates such as [socket2] to
configure socket options that are not available on TcpSocket.
Trait Implementations§
Source§impl AsFd for TcpSocket
Available on Unix only.
impl AsFd for TcpSocket
Source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
SharedFd.Auto Trait Implementations§
impl !Freeze for TcpSocket
impl RefUnwindSafe for TcpSocket
impl Send for TcpSocket
impl Sync for TcpSocket
impl Unpin for TcpSocket
impl UnsafeUnpin for TcpSocket
impl UnwindSafe for TcpSocket
Blanket Implementations§
§impl<T> AsSource for Twhere
T: AsFd,
impl<T> AsSource for Twhere
T: AsFd,
§fn source(&self) -> BorrowedFd<'_>
fn source(&self) -> BorrowedFd<'_>
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more