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 UnixListenerimpl RefUnwindSafe for UnixListenerimpl Unpin for UnixListenerimpl Send for UnixListenerimpl Sync for UnixListenerimpl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
type Error = InfallibleThe 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>>::ErrorThe 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