Skip to main content

TcpSocket

Struct TcpSocket 

Source
pub struct TcpSocket { /* private fields */ }
Available on crate feature net only.
Expand description

A TCP socket that has not yet been converted to a TcpStream or TcpListener.

Implementations§

Source§

impl TcpSocket

Source

pub async fn new_v4() -> Result<TcpSocket, Error>

Creates a new socket configured for IPv4.

Source

pub async fn new_v6() -> Result<TcpSocket, Error>

Creates a new socket configured for IPv6.

Source

pub fn set_keepalive(&self, keepalive: bool) -> Result<(), Error>

Sets value for the SO_KEEPALIVE option on this socket.

Source

pub fn keepalive(&self) -> Result<bool, Error>

Gets the value of the SO_KEEPALIVE option on this socket.

Source

pub fn set_reuseaddr(&self, reuseaddr: bool) -> Result<(), Error>

Allows the socket to bind to an in-use address.

Source

pub fn reuseaddr(&self) -> Result<bool, Error>

Retrieves the value set for SO_REUSEADDR on this socket.

Source

pub fn set_reuseport(&self, reuseport: bool) -> Result<(), Error>

Available on Unix and non-Solaris and non-illumos and non-Cygwin only.

Allows the socket to bind to an in-use port. Only available for supported unix systems.

Source

pub fn reuseport(&self) -> Result<bool, Error>

Available on Unix and non-Solaris and non-illumos and non-Cygwin only.

Allows the socket to bind to an in-use port. Only available for supported unix systems.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn set_zero_linger(&self) -> Result<(), Error>

Sets a linger duration of zero on this socket by setting the SO_LINGER option.

Source

pub fn linger(&self) -> Result<Option<Duration>, Error>

Reads the linger duration for this socket by getting the SO_LINGER option.

Source

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.

Source

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.

Source

pub 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.

Gets the value of the IPV6_TCLASS option for this socket.

For more information about this option, see set_tclass_v6.

Source

pub 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.

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.

Source

pub fn tos_v4(&self) -> Result<u32, Error>

Available on neither Fuchsia nor Redox OS nor Solaris nor illumos nor Haiku.

Gets the value of the IP_TOS option for this socket.

For more information about this option, see set_tos_v4.

Source

pub fn set_tos_v4(&self, tos: u32) -> Result<(), Error>

Available on neither Fuchsia nor Redox OS nor Solaris nor illumos nor Haiku.

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
Source

pub fn device(&self) -> Result<Option<Vec<u8>>, Error>

Available on Android or Fuchsia or Linux only.

Gets the value for the SO_BINDTODEVICE option on this socket

Returns the interface name of the device to which this socket is bound.

Source

pub fn bind_device(&self, interface: Option<&[u8]>) -> Result<(), Error>

Available on Android or Fuchsia or Linux only.

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.

Source

pub fn local_addr(&self) -> Result<SocketAddr, Error>

Gets the local address of this socket.

Source

pub fn take_error(&self) -> Result<Option<Error>, Error>

Returns the value of the SO_ERROR option.

Source

pub async fn bind(&self, addr: SocketAddr) -> Result<(), Error>

Binds the socket to the given address.

Source

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.

Source

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.

Source

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.
Source§

fn as_fd(&self) -> BorrowedFd<'_>

Borrows the file descriptor. Read more
Source§

impl AsRawFd for TcpSocket

Source§

fn as_raw_fd(&self) -> i32

Extracts the raw file descriptor. Read more
Source§

impl Debug for TcpSocket

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl FromRawFd for TcpSocket

Available on Unix only.
Source§

unsafe fn from_raw_fd(fd: i32) -> TcpSocket

Constructs a new instance of Self from the given raw file descriptor. Read more
Source§

impl ToSharedFd<Socket> for TcpSocket

Source§

fn to_shared_fd(&self) -> SharedFd<Socket>

Return a cloned SharedFd.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AsSource for T
where T: AsFd,

§

fn source(&self) -> BorrowedFd<'_>

Returns the borrowed file descriptor.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> Ungil for T
where T: Send,