pub struct UnixListener { /* private fields */ }net only.Expand description
A Unix socket which can accept connections from other Unix sockets.
You can accept a new connection by using the accept method.
A UnixListener can be turned into a Stream with UnixListenerStream.
§Errors
Note that accepting a connection can lead to various errors and not all of them are necessarily fatal ‒ for example having too many open file descriptors or the other side closing the connection while it waits in an accept queue. These would terminate the stream if not handled in any way.
§Examples
use tokio::net::UnixListener;
#[tokio::main]
async fn main() {
let listener = UnixListener::bind("/path/to/the/socket").unwrap();
loop {
match listener.accept().await {
Ok((stream, _addr)) => {
println!("new client!");
}
Err(e) => { /* connection failed */ }
}
}
}Implementations§
Source§impl UnixListener
impl UnixListener
Sourcepub fn bind<P>(path: P) -> Result<UnixListener>
Available on non-loom only.
pub fn bind<P>(path: P) -> Result<UnixListener>
loom only.Creates a new UnixListener bound to the specified path.
§Panics
This function panics if it is not called from within a runtime with IO enabled.
The runtime is usually set implicitly when this function is called
from a future driven by a tokio runtime, otherwise runtime can be set
explicitly with Runtime::enter function.
Sourcepub fn from_std(listener: UnixListener) -> Result<UnixListener>
Available on non-loom only.
pub fn from_std(listener: UnixListener) -> Result<UnixListener>
loom only.Creates new UnixListener from a std::os::unix::net::UnixListener.
This function is intended to be used to wrap a UnixListener from the
standard library in the Tokio equivalent.
§Notes
The caller is responsible for ensuring that the listener is in
non-blocking mode. Otherwise all I/O operations on the listener
will block the thread, which will cause unexpected behavior.
Non-blocking mode can be set using set_nonblocking.
Passing a listener in blocking mode is always erroneous, and the behavior in that case may change in the future. For example, it could panic.
§Examples
use tokio::net::UnixListener;
use std::os::unix::net::UnixListener as StdUnixListener;
let std_listener = StdUnixListener::bind("/path/to/the/socket")?;
std_listener.set_nonblocking(true)?;
let listener = UnixListener::from_std(std_listener)?;§Panics
This function panics if it is not called from within a runtime with IO enabled.
The runtime is usually set implicitly when this function is called
from a future driven by a tokio runtime, otherwise runtime can be set
explicitly with Runtime::enter function.
Sourcepub fn into_std(self) -> Result<UnixListener>
Available on non-loom only.
pub fn into_std(self) -> Result<UnixListener>
loom only.Turns a tokio::net::UnixListener into a std::os::unix::net::UnixListener.
The returned std::os::unix::net::UnixListener will have nonblocking mode
set as true. Use set_nonblocking to change the blocking mode if needed.
§Examples
let tokio_listener = tokio::net::UnixListener::bind("/path/to/the/socket")?;
let std_listener = tokio_listener.into_std()?;
std_listener.set_nonblocking(false)?;Sourcepub fn local_addr(&self) -> Result<SocketAddr>
Available on non-loom only.
pub fn local_addr(&self) -> Result<SocketAddr>
loom only.Returns the local socket address of this listener.
Sourcepub fn take_error(&self) -> Result<Option<Error>>
Available on non-loom only.
pub fn take_error(&self) -> Result<Option<Error>>
loom only.Returns the value of the SO_ERROR option.
Sourcepub async fn accept(&self) -> Result<(UnixStream, SocketAddr)>
Available on non-loom only.
pub async fn accept(&self) -> Result<(UnixStream, SocketAddr)>
loom only.Accepts a new incoming connection to this listener.
§Cancel safety
This method is cancel safe. If the method is used as the event in a
tokio::select! statement and some other branch
completes first, then it is guaranteed that no new connections were
accepted by this method.
Sourcepub fn poll_accept(
&self,
cx: &mut Context<'_>,
) -> Poll<Result<(UnixStream, SocketAddr)>>
Available on non-loom only.
pub fn poll_accept( &self, cx: &mut Context<'_>, ) -> Poll<Result<(UnixStream, SocketAddr)>>
loom only.Polls to accept a new incoming connection to this listener.
If there is no connection to accept, Poll::Pending is returned and the
current task will be notified by a waker. Note that on multiple calls
to poll_accept, only the Waker from the Context passed to the most
recent call is scheduled to receive a wakeup.
Trait Implementations§
Source§impl AsFd for UnixListener
Available on non-loom only.
impl AsFd for UnixListener
loom only.Source§fn as_fd(&self) -> BorrowedFd<'_>
fn as_fd(&self) -> BorrowedFd<'_>
Source§impl AsRawFd for UnixListener
Available on non-loom only.
impl AsRawFd for UnixListener
loom only.Source§impl Debug for UnixListener
Available on non-loom only.
impl Debug for UnixListener
loom only.Source§impl TryFrom<UnixListener> for UnixListener
Available on non-loom only.
impl TryFrom<UnixListener> for UnixListener
loom only.Source§fn try_from(stream: UnixListener) -> Result<Self>
fn try_from(stream: UnixListener) -> Result<Self>
Consumes stream, returning the tokio I/O object.
This is equivalent to
UnixListener::from_std(stream).
Auto Trait Implementations§
impl !Freeze for UnixListener
loom only.impl RefUnwindSafe for UnixListener
loom only.impl Send for UnixListener
loom only.impl Sync for UnixListener
loom only.impl Unpin for UnixListener
loom only.impl UnsafeUnpin for UnixListener
loom only.impl UnwindSafe for UnixListener
loom only.Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Available on non-loom only.
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
loom only.Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Instrument for T
Available on non-loom only.
impl<T> Instrument for T
loom only.§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§impl<T> WithSubscriber for T
Available on non-loom only.
impl<T> WithSubscriber for T
loom only.