pub struct UnixListener(_);
A structure representing a Unix domain socket server.
use std::thread; use std::os::unix::net::{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; } } }
impl UnixListener
[src]
fn bind<P: AsRef<Path>>(path: P) -> Result<UnixListener>
Creates a new UnixListener
bound to the specified socket.
use std::os::unix::net::UnixListener; let listener = match UnixListener::bind("/path/to/the/socket") { Ok(sock) => sock, Err(e) => { println!("Couldn't connect: {:?}", e); return } };
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.
use std::os::unix::net::UnixListener; let listener = UnixListener::bind("/path/to/the/socket").unwrap(); match listener.accept() { Ok((socket, addr)) => println!("Got a client: {:?}", addr), Err(e) => println!("accept function failed: {:?}", e), }
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.
use std::os::unix::net::UnixListener; let listener = UnixListener::bind("/path/to/the/socket").unwrap(); let listener_copy = listener.try_clone().expect("try_clone failed");
fn local_addr(&self) -> Result<SocketAddr>
Returns the local socket address of this listener.
use std::os::unix::net::UnixListener; let listener = UnixListener::bind("/path/to/the/socket").unwrap(); let addr = listener.local_addr().expect("Couldn't get local address");
fn set_nonblocking(&self, nonblocking: bool) -> Result<()>
Moves the socket into or out of nonblocking mode.
use std::os::unix::net::UnixListener; let listener = UnixListener::bind("/path/to/the/socket").unwrap(); listener.set_nonblocking(true).expect("Couldn't set non blocking");
fn take_error(&self) -> Result<Option<Error>>
Returns the value of the SO_ERROR
option.
use std::os::unix::net::UnixListener; let listener = UnixListener::bind("/tmp/sock").unwrap(); if let Ok(Some(err)) = listener.take_error() { println!("Got error: {:?}", err); }
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.
use std::thread; use std::os::unix::net::{UnixStream, UnixListener}; fn handle_client(stream: UnixStream) { // ... } let listener = UnixListener::bind("/path/to/the/socket").unwrap(); for stream in listener.incoming() { match stream { Ok(stream) => { thread::spawn(|| handle_client(stream)); } Err(err) => { break; } } }
impl Debug for UnixListener
[src]
fn fmt(&self, fmt: &mut Formatter) -> Result
Formats the value using the given formatter.
impl AsRawFd for UnixListener
[src]
fn as_raw_fd(&self) -> RawFd
Extracts the raw file descriptor. Read more
impl FromRawFd for UnixListener
[src]
unsafe fn from_raw_fd(fd: RawFd) -> UnixListener
Constructs a new instance of Self
from the given raw file descriptor. Read more
impl IntoRawFd for UnixListener
[src]
fn into_raw_fd(self) -> RawFd
Consumes this object, returning the raw underlying file descriptor. Read more
impl<'a> IntoIterator for &'a UnixListener
[src]
type Item = Result<UnixStream>
The type of the elements being iterated over.
type IntoIter = Incoming<'a>
Which kind of iterator are we turning this into?
fn into_iter(self) -> Incoming<'a>
Creates an iterator from a value. Read more
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/os/unix/net/struct.UnixListener.html