pub struct Socket { /* private fields */ }
Implementations§
Source§impl Socket
impl Socket
Sourcepub fn new_socketpair() -> Result<(Socket, Socket)>
pub fn new_socketpair() -> Result<(Socket, Socket)>
Creates a socket pair (AF_UNIX/SOCK_SEQPACKET).
Both sockets are close-on-exec by default.
Sourcepub fn no_cloexec(&mut self) -> Result<()>
pub fn no_cloexec(&mut self) -> Result<()>
Disables close-on-exec on the socket (to preserve it across process forks).
Sourcepub fn recv_into_iovec<F: Default + AsMut<[RawFd]>>(
&mut self,
iov: &mut [IoSliceMut<'_>],
) -> Result<(usize, Option<F>)>
pub fn recv_into_iovec<F: Default + AsMut<[RawFd]>>( &mut self, iov: &mut [IoSliceMut<'_>], ) -> Result<(usize, Option<F>)>
Reads bytes from the socket into the given scatter/gather array.
If file descriptors were passed, returns them too.
To receive file descriptors, you need to instantiate the type parameter F
as [RawFd; n]
, where n
is the number of descriptors you want to receive.
Received file descriptors are set close-on-exec.
Sourcepub fn recv_into_slice<F: Default + AsMut<[RawFd]>>(
&mut self,
buf: &mut [u8],
) -> Result<(usize, Option<F>)>
pub fn recv_into_slice<F: Default + AsMut<[RawFd]>>( &mut self, buf: &mut [u8], ) -> Result<(usize, Option<F>)>
Reads bytes from the socket into the given buffer.
If file descriptors were passed, returns them too.
To receive file descriptors, you need to instantiate the type parameter F
as [RawFd; n]
, where n
is the number of descriptors you want to receive.
Received file descriptors are set close-on-exec.
Sourcepub fn recv_into_buf<F: Default + AsMut<[RawFd]>>(
&mut self,
buf_size: usize,
) -> Result<(usize, Vec<u8>, Option<F>)>
pub fn recv_into_buf<F: Default + AsMut<[RawFd]>>( &mut self, buf_size: usize, ) -> Result<(usize, Vec<u8>, Option<F>)>
Reads bytes from the socket into a new buffer.
If file descriptors were passed, returns them too.
To receive file descriptors, you need to instantiate the type parameter F
as [RawFd; n]
, where n
is the number of descriptors you want to receive.
Received file descriptors are set close-on-exec.
Sourcepub fn recv_into_buf_with_len<F: Default + AsMut<[RawFd]>>(
&mut self,
buf_size: usize,
) -> Result<(usize, Vec<u8>, u64, Option<F>)>
pub fn recv_into_buf_with_len<F: Default + AsMut<[RawFd]>>( &mut self, buf_size: usize, ) -> Result<(usize, Vec<u8>, u64, Option<F>)>
Reads bytes from the socket into a new buffer, also reading the first 64 bits as length. The resulting buffer is truncated to that length.
If file descriptors were passed, returns them too.
To receive file descriptors, you need to instantiate the type parameter F
as [RawFd; n]
, where n
is the number of descriptors you want to receive.
Received file descriptors are set close-on-exec.
Sourcepub unsafe fn recv_struct_raw<T, F: Default + AsMut<[RawFd]>>(
&mut self,
) -> Result<(T, Option<F>)>
pub unsafe fn recv_struct_raw<T, F: Default + AsMut<[RawFd]>>( &mut self, ) -> Result<(T, Option<F>)>
See recv_struct
for docs
§Safety
- For some types (e.g.), not every bit pattern is allowed. If bytes, read from socket aren’t correct, that’s UB.
- Some types mustn’t change their memory location (see
std::pin::Pin
). Sending object of such a type is UB.
Sourcepub fn send_iovec(
&mut self,
iov: &[IoSlice<'_>],
fds: Option<&[RawFd]>,
) -> Result<usize>
pub fn send_iovec( &mut self, iov: &[IoSlice<'_>], fds: Option<&[RawFd]>, ) -> Result<usize>
Sends bytes from scatter-gather vectors over the socket.
Optionally passes file descriptors with the message.
Sourcepub fn send_slice(
&mut self,
data: &[u8],
fds: Option<&[RawFd]>,
) -> Result<usize>
pub fn send_slice( &mut self, data: &[u8], fds: Option<&[RawFd]>, ) -> Result<usize>
Sends bytes from a slice over the socket.
Optionally passes file descriptors with the message.