Trait TcpStreamExt
trait TcpStreamExt: Sealed
Os-specific extensions for TcpStream
Required Methods
fn set_quickack(self: &Self, quickack: bool) -> Result<()>Enable or disable
TCP_QUICKACK.This flag causes Linux to eagerly send ACKs rather than delaying them. Linux may reset this flag after further operations on the socket.
See
man 7 tcpand TCP delayed acknowledgement for more information.Examples
use std::net::TcpStream; #[cfg(target_os = "linux")] use std::os::linux::net::TcpStreamExt; #[cfg(target_os = "android")] use std::os::android::net::TcpStreamExt; let stream = TcpStream::connect("127.0.0.1:8080") .expect("Couldn't connect to the server..."); stream.set_quickack(true).expect("set_quickack call failed");fn quickack(self: &Self) -> Result<bool>Gets the value of the
TCP_QUICKACKoption on this socket.For more information about this option, see
TcpStreamExt::set_quickack.Examples
use std::net::TcpStream; #[cfg(target_os = "linux")] use std::os::linux::net::TcpStreamExt; #[cfg(target_os = "android")] use std::os::android::net::TcpStreamExt; let stream = TcpStream::connect("127.0.0.1:8080") .expect("Couldn't connect to the server..."); stream.set_quickack(true).expect("set_quickack call failed"); assert_eq!(stream.quickack().unwrap_or(false), true);fn set_deferaccept(self: &Self, accept: Duration) -> Result<()>A socket listener will be awakened solely when data arrives.
The
acceptargument set the maximum delay until the data is available to read, reducing the number of short lived connections without data to process. Contrary to other platformsSO_ACCEPTFILTERfeature equivalent, there is no necessity to set it after thelistencall. Note that the delay is expressed as Duration from user's perspective the call rounds it down to the nearest second expressible as ac_int.See
man 7 tcpExamples
#![feature(tcp_deferaccept)] use std::net::TcpStream; use std::os::linux::net::TcpStreamExt; use std::time::Duration; let stream = TcpStream::connect("127.0.0.1:8080") .expect("Couldn't connect to the server..."); stream.set_deferaccept(Duration::from_secs(1u64)).expect("set_deferaccept call failed");fn deferaccept(self: &Self) -> Result<Duration>Gets the accept delay value of the
TCP_DEFER_ACCEPToption.For more information about this option, see
TcpStreamExt::set_deferaccept.Examples
#![feature(tcp_deferaccept)] use std::net::TcpStream; use std::os::linux::net::TcpStreamExt; use std::time::Duration; let stream = TcpStream::connect("127.0.0.1:8080") .expect("Couldn't connect to the server..."); stream.set_deferaccept(Duration::from_secs(1u64)).expect("set_deferaccept call failed"); assert_eq!(stream.deferaccept().unwrap(), Duration::from_secs(1u64));
Implementors
impl TcpStreamExt for TcpStream