pub struct UdpSocket { /* private fields */ }
Implementations§
Source§impl UdpSocket
impl UdpSocket
Sourcepub fn from_std(socket: UdpSocket) -> Result<Self>
pub fn from_std(socket: UdpSocket) -> Result<Self>
Creates a new UDP socket from a previously created std::net::UdpSocket
Sourcepub fn bind<A: ToSocketAddrs>(addr: A) -> Result<Self>
pub fn bind<A: ToSocketAddrs>(addr: A) -> Result<Self>
create a new UDP socket and attempt to bind to addr
Sourcepub fn set_nonblocking(&self, nonblocking: bool) -> Result<()>
pub fn set_nonblocking(&self, nonblocking: bool) -> Result<()>
sets nonblocking mode
Sourcepub fn set_broadcast(&self, broadcast: bool) -> Result<()>
pub fn set_broadcast(&self, broadcast: bool) -> Result<()>
sets the value of SO_BROADCAST for this socket
pub fn connect<A: ToSocketAddrs>(&self, addrs: A) -> Result<()>
pub fn join_multicast_v4( &self, multiaddr: Ipv4Addr, interface: Ipv4Addr, ) -> Result<()>
pub fn join_multicast_v6( &self, multiaddr: &Ipv6Addr, interface: u32, ) -> Result<()>
pub fn leave_multicast_v4( &self, multiaddr: Ipv4Addr, interface: Ipv4Addr, ) -> Result<()>
pub fn leave_multicast_v6( &self, multiaddr: &Ipv6Addr, interface: u32, ) -> Result<()>
pub fn set_multicast_loop_v4(&self, on: bool) -> Result<()>
pub fn set_multicast_loop_v6(&self, on: bool) -> Result<()>
Sourcepub fn send_to(&self, buf: &[u8], target: SocketAddr) -> Result<usize>
pub fn send_to(&self, buf: &[u8], target: SocketAddr) -> Result<usize>
Sends data on the socket to the given address. On success, returns the number of bytes written.
calls underlying tokio send_to
Sourcepub fn send(&self, buf: &[u8]) -> Result<usize>
pub fn send(&self, buf: &[u8]) -> Result<usize>
Sends data on the socket to the remote address that the socket is connected to.
See tokio send
Sourcepub fn recv_from(&self, buf: &mut [u8]) -> Result<(usize, SocketAddr)>
pub fn recv_from(&self, buf: &mut [u8]) -> Result<(usize, SocketAddr)>
Receives a single datagram message on the socket. On success, returns the number of bytes read and the origin.
See tokio recv_from
Sourcepub fn recv(&self, buf: &mut [u8]) -> Result<usize>
pub fn recv(&self, buf: &mut [u8]) -> Result<usize>
Receives a single datagram message on the socket from the remote address to which it is connected. On success, returns the number of bytes read.
See tokio recv
Sourcepub fn send_mmsg<B: AsPtr<u8>>(
&mut self,
state: &UdpState,
transmits: &[Transmit<B>],
) -> Result<usize, Error>
pub fn send_mmsg<B: AsPtr<u8>>( &mut self, state: &UdpState, transmits: &[Transmit<B>], ) -> Result<usize, Error>
Calls syscall sendmmsg
. With a given state
configured GSO and
transmits
with information on the data and metadata about outgoing
packets.
Utilizes the default batch size (DEFAULT_BATCH_SIZE
), and will
send no more than that number of messages. The caller must call this
fuction again after modifying transmits
to continue sending the
entire set of messages.
Sourcepub fn send_mmsg_with_batch_size<B: AsPtr<u8>, const BATCH_SIZE: usize>(
&mut self,
state: &UdpState,
transmits: &[Transmit<B>],
) -> Result<usize, Error>
pub fn send_mmsg_with_batch_size<B: AsPtr<u8>, const BATCH_SIZE: usize>( &mut self, state: &UdpState, transmits: &[Transmit<B>], ) -> Result<usize, Error>
Calls syscall sendmmsg
. With a given state
configured GSO and
transmits
with information on the data and metadata about outgoing packets.
Sends no more than BATCH_SIZE
messages. The caller must call this
fuction again after modifying transmits
to continue sending the
entire set of messages. BATCH_SIZE_CAP
defines the maximum that
will be sent, regardless of the specified BATCH_SIZE
Sourcepub fn send_msg<B: AsPtr<u8>>(
&self,
state: &UdpState,
transmits: Transmit<B>,
) -> Result<usize>
pub fn send_msg<B: AsPtr<u8>>( &self, state: &UdpState, transmits: Transmit<B>, ) -> Result<usize>
Calls syscall sendmsg
. With a given state
configured GSO and
transmit
with information on the data and metadata about outgoing packet.
Sourcepub fn recv_mmsg(
&self,
bufs: &mut [IoSliceMut<'_>],
meta: &mut [RecvMeta],
) -> Result<usize>
pub fn recv_mmsg( &self, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta], ) -> Result<usize>
async version of recvmmsg
Sourcepub fn recv_mmsg_with_batch_size<const BATCH_SIZE: usize>(
&self,
bufs: &mut [IoSliceMut<'_>],
meta: &mut [RecvMeta],
) -> Result<usize>
pub fn recv_mmsg_with_batch_size<const BATCH_SIZE: usize>( &self, bufs: &mut [IoSliceMut<'_>], meta: &mut [RecvMeta], ) -> Result<usize>
async version of recvmmsg
, with compile-time configurable batch size
Sourcepub fn recv_msg(&self, buf: &mut [u8]) -> Result<RecvMeta>
pub fn recv_msg(&self, buf: &mut [u8]) -> Result<RecvMeta>
recv_msg
is similar to recv_from
but returns extra information
about the packet in RecvMeta
.
Sourcepub fn local_addr(&self) -> Result<SocketAddr>
pub fn local_addr(&self) -> Result<SocketAddr>
Returns local address this socket is bound to.