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);
} pub fn incoming<'a>(&'a self) -> Incoming<'a>
[src]
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
[src]
Formats the value using the given formatter. Read more
impl AsRawFd for UnixListener
[src]
fn as_raw_fd(&self) -> RawFd
[src]
Extracts the raw file descriptor. Read more
impl FromRawFd for UnixListener
[src]
unsafe fn from_raw_fd(fd: RawFd) -> UnixListener
[src]
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
[src]
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>
[src]
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