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]
pub fn bind<P: AsRef<Path>>(path: P) -> Result<UnixListener>
[src]
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 } };
pub fn accept(&self) -> Result<(UnixStream, SocketAddr)>
[src]
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 corresponding 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), }
pub fn try_clone(&self) -> Result<UnixListener>
[src]
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");
pub fn local_addr(&self) -> Result<SocketAddr>
[src]
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");
pub fn set_nonblocking(&self, nonblocking: bool) -> Result<()>
[src]
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");
pub fn take_error(&self) -> Result<Option<Error>>
[src]
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); }
On Redox this always returns None
.
pub fn incoming<'a>(&'a self) -> Incoming<'a>
[src]
impl<'a> Iterator for Incoming<'a> type Item = Result<UnixStream>;
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 AsRawFd for UnixListener
[src]
impl FromRawFd for UnixListener
[src]
unsafe fn from_raw_fd(fd: RawFd) -> UnixListener
[src]
impl IntoRawFd for UnixListener
[src]
fn into_raw_fd(self) -> RawFd
[src]
impl Debug for UnixListener
[src]
impl<'a> IntoIterator for &'a UnixListener
[src]
impl UnwindSafe for UnixListener
impl RefUnwindSafe for UnixListener
impl Unpin for UnixListener
impl Send for UnixListener
impl Sync for UnixListener
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
impl<T> From<T> for T
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
fn borrow(&self) -> &T
[src]
impl<'_, F> Future for &'_ mut F where F: Unpin + Future + ?Sized, type Output = <F as Future>::Output; impl<'_, I> Iterator for &'_ mut I where I: Iterator + ?Sized, type Item = <I as Iterator>::Item; impl<'_, R: Read + ?Sized> Read for &'_ mut R impl<'_, W: Write + ?Sized> Write for &'_ mut W
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
fn borrow_mut(&mut self) -> &mut T
[src]
impl<'_, F> Future for &'_ mut F where F: Unpin + Future + ?Sized, type Output = <F as Future>::Output; impl<'_, I> Iterator for &'_ mut I where I: Iterator + ?Sized, type Item = <I as Iterator>::Item; impl<'_, R: Read + ?Sized> Read for &'_ mut R impl<'_, W: Write + ?Sized> Write for &'_ mut W
impl<T> Any for T where
T: 'static + ?Sized,
[src]
© 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