pub struct UnixDatagram { /* private fields */ }
Expand description
A Unix datagram socket.
After creating a UnixDatagram
by bind
ing it to a path, data can be sent to and
received from any other socket address.
This type is an async version of std::os::unix::net::UnixDatagram
.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::bind("/tmp/socket1").await?;
socket.send_to(b"hello world", "/tmp/socket2").await?;
let mut buf = vec![0u8; 1024];
let (n, peer) = socket.recv_from(&mut buf).await?;
Implementations§
source§impl UnixDatagram
impl UnixDatagram
sourcepub async fn bind<P: AsRef<Path>>(path: P) -> Result<UnixDatagram>
pub async fn bind<P: AsRef<Path>>(path: P) -> Result<UnixDatagram>
Creates a Unix datagram socket bound to the given path.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::bind("/tmp/socket").await?;
sourcepub fn unbound() -> Result<UnixDatagram>
pub fn unbound() -> Result<UnixDatagram>
Creates a Unix datagram which is not bound to any address.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::unbound()?;
sourcepub fn pair() -> Result<(UnixDatagram, UnixDatagram)>
pub fn pair() -> Result<(UnixDatagram, UnixDatagram)>
Creates an unnamed pair of connected sockets.
Returns two sockets which are connected to each other.
Examples
use async_std::os::unix::net::UnixDatagram;
let (socket1, socket2) = UnixDatagram::pair()?;
sourcepub async fn connect<P: AsRef<Path>>(&self, path: P) -> Result<()>
pub async fn connect<P: AsRef<Path>>(&self, path: P) -> Result<()>
Connects the socket to the specified address.
The send
method may be used to send data to the specified address. recv
and
recv_from
will only receive data from that address.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::unbound()?;
socket.connect("/tmp/socket").await?;
sourcepub fn local_addr(&self) -> Result<SocketAddr>
pub fn local_addr(&self) -> Result<SocketAddr>
Returns the address of this socket.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::bind("/tmp/socket").await?;
let addr = socket.local_addr()?;
sourcepub fn peer_addr(&self) -> Result<SocketAddr>
pub fn peer_addr(&self) -> Result<SocketAddr>
sourcepub async fn recv_from(&self, buf: &mut [u8]) -> Result<(usize, SocketAddr)>
pub async fn recv_from(&self, buf: &mut [u8]) -> Result<(usize, SocketAddr)>
Receives data from the socket.
On success, returns the number of bytes read and the address from where the data came.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::unbound()?;
let mut buf = vec![0; 1024];
let (n, peer) = socket.recv_from(&mut buf).await?;
sourcepub async fn recv(&self, buf: &mut [u8]) -> Result<usize>
pub async fn recv(&self, buf: &mut [u8]) -> Result<usize>
Receives data from the socket.
On success, returns the number of bytes read.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::bind("/tmp/socket").await?;
let mut buf = vec![0; 1024];
let n = socket.recv(&mut buf).await?;
sourcepub async fn send_to<P: AsRef<Path>>(
&self,
buf: &[u8],
path: P
) -> Result<usize>
pub async fn send_to<P: AsRef<Path>>( &self, buf: &[u8], path: P ) -> Result<usize>
Sends data on the socket to the specified address.
On success, returns the number of bytes written.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::unbound()?;
socket.send_to(b"hello world", "/tmp/socket").await?;
sourcepub async fn send(&self, buf: &[u8]) -> Result<usize>
pub async fn send(&self, buf: &[u8]) -> Result<usize>
Sends data on the socket to the socket’s peer.
On success, returns the number of bytes written.
Examples
use async_std::os::unix::net::UnixDatagram;
let socket = UnixDatagram::unbound()?;
socket.connect("/tmp/socket").await?;
socket.send(b"hello world").await?;
sourcepub fn shutdown(&self, how: Shutdown) -> Result<()>
pub fn shutdown(&self, how: Shutdown) -> Result<()>
Shut down the read, write, or both halves of this connection.
This function will cause all pending and future I/O calls on the specified portions to
immediately return with an appropriate value (see the documentation of Shutdown
).
Examples
use async_std::os::unix::net::UnixDatagram;
use std::net::Shutdown;
let socket = UnixDatagram::unbound()?;
socket.shutdown(Shutdown::Both)?;
Trait Implementations§
source§impl AsRawFd for UnixDatagram
impl AsRawFd for UnixDatagram
source§impl Debug for UnixDatagram
impl Debug for UnixDatagram
source§impl From<UnixDatagram> for UnixDatagram
impl From<UnixDatagram> for UnixDatagram
source§fn from(datagram: StdUnixDatagram) -> UnixDatagram
fn from(datagram: StdUnixDatagram) -> UnixDatagram
Converts a std::os::unix::net::UnixDatagram
into its asynchronous equivalent.
source§impl FromRawFd for UnixDatagram
impl FromRawFd for UnixDatagram
source§unsafe fn from_raw_fd(fd: RawFd) -> UnixDatagram
unsafe fn from_raw_fd(fd: RawFd) -> UnixDatagram
Self
from the given raw file
descriptor. Read moresource§impl IntoRawFd for UnixDatagram
impl IntoRawFd for UnixDatagram
source§fn into_raw_fd(self) -> RawFd
fn into_raw_fd(self) -> RawFd
source§impl TryFrom<UnixDatagram> for UnixDatagram
impl TryFrom<UnixDatagram> for UnixDatagram
source§fn try_from(listener: UnixDatagram) -> Result<StdUnixDatagram>
fn try_from(listener: UnixDatagram) -> Result<StdUnixDatagram>
Converts a UnixDatagram
into its synchronous equivalent.
Auto Trait Implementations§
impl RefUnwindSafe for UnixDatagram
impl Send for UnixDatagram
impl Sync for UnixDatagram
impl Unpin for UnixDatagram
impl UnwindSafe for UnixDatagram
Blanket Implementations§
§impl<T> AsRawFilelike for Twhere
T: AsRawFd,
impl<T> AsRawFilelike for Twhere
T: AsRawFd,
§fn as_raw_filelike(&self) -> i32
fn as_raw_filelike(&self) -> i32
§impl<T> AsRawSocketlike for Twhere
T: AsRawFd,
impl<T> AsRawSocketlike for Twhere
T: AsRawFd,
§fn as_raw_socketlike(&self) -> i32
fn as_raw_socketlike(&self) -> i32
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> FromRawFilelike for Twhere
T: FromRawFd,
impl<T> FromRawFilelike for Twhere
T: FromRawFd,
§unsafe fn from_raw_filelike(raw: i32) -> T
unsafe fn from_raw_filelike(raw: i32) -> T
Self
from the raw value. Read more§impl<T> FromRawSocketlike for Twhere
T: FromRawFd,
impl<T> FromRawSocketlike for Twhere
T: FromRawFd,
§unsafe fn from_raw_socketlike(raw: i32) -> T
unsafe fn from_raw_socketlike(raw: i32) -> T
Self
from the raw value. Read more