Struct unix_socket::UnixListener
[−]
[src]
pub struct UnixListener { // some fields omitted }
A structure representing a Unix domain socket server.
Examples
use std::thread; use unix_socket::{UnixStream, UnixListener}; fn handle_client(stream: UnixStream) { // ... } let listener = UnixListener::bind("/path/to/the/socket").unwrap(); // accept connections and process them, spawning a new thread for each one for stream in listener.incoming() { match stream { Ok(stream) => { /* connection succeeded */ thread::spawn(|| handle_client(stream)); } Err(err) => { /* connection failed */ break; } } } // close the listener socket drop(listener);
Methods
impl UnixListener
fn bind<P: AsRef<Path>>(path: P) -> Result<UnixListener>
Creates a new UnixListener
bound to the specified socket.
Linux provides, as a nonportable extension, a separate "abstract"
address namespace as opposed to filesystem-based addressing. If path
begins with a null byte, it will be interpreted as an "abstract"
address. Otherwise, it will be interpreted as a "pathname" address,
corresponding to a path on the filesystem.
fn accept(&self) -> Result<(UnixStream, SocketAddr)>
Accepts a new incoming connection to this listener.
This function will block the calling thread until a new Unix connection
is established. When established, the corersponding UnixStream
and
the remote peer's address will be returned.
fn try_clone(&self) -> Result<UnixListener>
Creates a new independently owned handle to the underlying socket.
The returned UnixListener
is a reference to the same socket that this
object references. Both handles can be used to accept incoming
connections and options set on one listener will affect the other.
fn local_addr(&self) -> Result<SocketAddr>
Returns the local socket address of this listener.
fn set_nonblocking(&self, nonblocking: bool) -> Result<()>
Moves the socket into or out of nonblocking mode.
fn take_error(&self) -> Result<Option<Error>>
Returns the value of the SO_ERROR
option.
fn incoming<'a>(&'a self) -> Incoming<'a>
Returns an iterator over incoming connections.
The iterator will never return None
and will also not yield the
peer's SocketAddr
structure.