pub struct Socket { /* private fields */ }
Expand description
Socket. Provides cross-platform adapter for system’s socket.
Implementations§
Source§impl Socket
impl Socket
Sourcepub fn new(socket_option: SocketOption) -> Result<Socket>
pub fn new(socket_option: SocketOption) -> Result<Socket>
Constructs a new Socket.
Sourcepub fn receive_from(&self, buf: &mut Vec<u8>) -> Result<(usize, SocketAddr)>
pub fn receive_from(&self, buf: &mut Vec<u8>) -> Result<(usize, SocketAddr)>
Receive packet with sender address.
Sourcepub fn write(&self, buf: &[u8]) -> Result<usize>
pub fn write(&self, buf: &[u8]) -> Result<usize>
Write data to the socket and send to the target. Return how many bytes were written.
Sourcepub fn read(&self, buf: &mut Vec<u8>) -> Result<usize>
pub fn read(&self, buf: &mut Vec<u8>) -> Result<usize>
Read data from the socket. Return how many bytes were read.
Sourcepub fn bind(&self, addr: SocketAddr) -> Result<()>
pub fn bind(&self, addr: SocketAddr) -> Result<()>
Bind socket to address.
Sourcepub fn set_receive_timeout(&self, timeout: Option<Duration>) -> Result<()>
pub fn set_receive_timeout(&self, timeout: Option<Duration>) -> Result<()>
Set receive timeout.
Sourcepub fn connect(&self, addr: SocketAddr) -> Result<()>
pub fn connect(&self, addr: SocketAddr) -> Result<()>
Initiate TCP connection.
Sourcepub fn accept(&self) -> Result<(Socket, SocketAddr)>
pub fn accept(&self) -> Result<(Socket, SocketAddr)>
Accept TCP connection.
Sourcepub fn peer_addr(&self) -> Result<SocketAddr>
pub fn peer_addr(&self) -> Result<SocketAddr>
Get peer address.
Sourcepub fn local_addr(&self) -> Result<SocketAddr>
pub fn local_addr(&self) -> Result<SocketAddr>
Get local address.
Sourcepub fn connect_timeout(
&self,
addr: &SocketAddr,
timeout: Duration,
) -> Result<()>
pub fn connect_timeout( &self, addr: &SocketAddr, timeout: Duration, ) -> Result<()>
Initiate a connection on this socket to the specified address, only only waiting for a certain period of time for the connection to be established. The non-blocking state of the socket is overridden by this function.
pub fn set_nonblocking(&self, nonblocking: bool) -> Result<()>
Sourcepub fn set_broadcast(&self, broadcast: bool) -> Result<()>
pub fn set_broadcast(&self, broadcast: bool) -> Result<()>
Set the value of the SO_BROADCAST
option for this socket.
When enabled, this socket is allowed to send packets to a broadcast address.
Sourcepub fn get_error(&self) -> Result<Option<Error>>
pub fn get_error(&self) -> Result<Option<Error>>
Get the value of the SO_ERROR
option on this socket.
Sourcepub fn set_keepalive(&self, keepalive: bool) -> Result<()>
pub fn set_keepalive(&self, keepalive: bool) -> Result<()>
Set value for the SO_KEEPALIVE
option on this socket.
Enable sending of keep-alive messages on connection-oriented sockets.
Sourcepub fn set_receive_buffer_size(&self, size: usize) -> Result<()>
pub fn set_receive_buffer_size(&self, size: usize) -> Result<()>
Set value for the SO_RCVBUF
option on this socket.
Changes the size of the operating system’s receive buffer associated with the socket.
Sourcepub fn set_reuse_address(&self, reuse: bool) -> Result<()>
pub fn set_reuse_address(&self, reuse: bool) -> Result<()>
Set value for the SO_REUSEADDR
option on this socket.
This indicates that futher calls to bind
may allow reuse of local addresses.
Sourcepub fn set_send_buffer_size(&self, size: usize) -> Result<()>
pub fn set_send_buffer_size(&self, size: usize) -> Result<()>
Set value for the SO_SNDBUF
option on this socket.
Changes the size of the operating system’s send buffer associated with the socket.
Sourcepub fn set_send_timeout(&self, duration: Option<Duration>) -> Result<()>
pub fn set_send_timeout(&self, duration: Option<Duration>) -> Result<()>
Set value for the SO_SNDTIMEO
option on this socket.
If timeout
is None
, then write
and send
calls will block indefinitely.
Sourcepub fn set_nodelay(&self, nodelay: bool) -> Result<()>
pub fn set_nodelay(&self, nodelay: bool) -> Result<()>
Set the value of the TCP_NODELAY
option on this socket.
If set, segments are always sent as soon as possible, even if there is only a small amount of data.