pub struct TcpStream { /* private fields */ }Expand description
A TCP stream.
Implementations§
Source§impl TcpStream
impl TcpStream
Sourcepub const fn local_addr(&self) -> SocketAddr
pub const fn local_addr(&self) -> SocketAddr
Report the local endpoint to which this stream is connected.
Sourcepub const fn remote_addr(&self) -> SocketAddr
pub const fn remote_addr(&self) -> SocketAddr
Report the remote endpoint to which this stream is connected.
Sourcepub fn shutdown_write(&self)
pub fn shutdown_write(&self)
Half-close the write side: send a FIN to the peer (shutdown(SHUT_WR) / CloseWrite) while
keeping the read side open so the peer’s remaining data can still be received. Fire-and-forget
(non-blocking, like the Drop-time Close): the FIN is emitted by the netstack in the
background, so this returns immediately and a caller using shutdown for signaling (e.g. a
bidirectional splice half-closing one direction) no longer hangs waiting for a FIN that was
never sent.
After this, writes fail (InvalidState): the socket has left the sendable state — this is
the intended shutdown(SHUT_WR) POSIX behavior (previously, when this was a no-op, a write
after shutdown still succeeded). Reads continue until the peer’s FIN.
Best-effort delivery: request_nonblocking treats a full command channel as success and
drops the command, so under channel saturation the FIN may not be sent — the socket then
teardown-degrades to the idle/keep-alive timeout reaper instead of a prompt FIN (never a hard
leak). A channel-closed error means the netstack is gone; the socket is already moot.
Sourcepub fn send_blocking(&self, b: &[u8]) -> Result<usize, Error>
pub fn send_blocking(&self, b: &[u8]) -> Result<usize, Error>
Send bytes to the remote.
Blocks until at least one byte can be queued. The return value is the number of bytes actually sent.
Sourcepub async fn send(&self, b: &[u8]) -> Result<usize, Error>
pub async fn send(&self, b: &[u8]) -> Result<usize, Error>
Send bytes to the remote.
Blocks until at least one byte can be queued. The return value is the number of bytes actually sent.
Sourcepub fn recv_blocking(&self, b: &mut [u8]) -> Result<usize, Error>
pub fn recv_blocking(&self, b: &mut [u8]) -> Result<usize, Error>
Receive bytes from the remote.
Returns the number of bytes actually received (blocks until there is at least one).
Sourcepub async fn recv(&self, b: &mut [u8]) -> Result<usize, Error>
pub async fn recv(&self, b: &mut [u8]) -> Result<usize, Error>
Receive bytes from the remote into the supplied buffer.
Returns the number of bytes actually received (blocks until there is at least one).
Sourcepub fn recv_bytes_blocking(&self) -> Result<Bytes, Error>
pub fn recv_bytes_blocking(&self) -> Result<Bytes, Error>
Receive bytes from the remote.
Returns the number of bytes actually received (blocks until there is at least one).
Sourcepub async fn recv_bytes(&self) -> Result<Bytes, Error>
pub async fn recv_bytes(&self) -> Result<Bytes, Error>
Receive bytes from the remote.