std::os::unix::net::UnixListener - Rust
Description: API documentation for the Rust `UnixListener` struct in crate `std`.
Keywords: rust, rustlang, rust-lang, UnixListener

# 1.10.0[−][src]Struct std::os::unix::net::UnixListener

    pub struct UnixListener(_);

This is supported on Unix only.

A structure representing a Unix domain socket server.

# Examples

    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;
            }
        }
    }Run

## Methods

###

`impl UnixListener`

[src]

####

`pub fn bind<P: AsRef<Path>>(path: P) -> Result<UnixListener>`

[src]

This is supported on Unix only.

Creates a new `UnixListener` bound to the specified socket.

# Examples

    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
        }
    };Run

####

`pub fn accept(&self) -> Result<(UnixStream, SocketAddr)>`

[src]

This is supported on Unix only.

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.

# Examples

    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),
    }Run

####

`pub fn try_clone(&self) -> Result<UnixListener>`

[src]

This is supported on Unix only.

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.

# Examples

    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");Run

####

`pub fn local_addr(&self) -> Result<SocketAddr>`

[src]

This is supported on Unix only.

Returns the local socket address of this listener.

# Examples

    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");Run

####

`pub fn set_nonblocking(&self, nonblocking: bool) -> Result<()>`

[src]

This is supported on Unix only.

Moves the socket into or out of nonblocking mode.

# Examples

    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");Run

####

`pub fn take_error(&self) -> Result<Option<Error>>`

[src]

This is supported on Unix only.

Returns the value of the `SO_ERROR` option.

# Examples

    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);
    }Run

# Platform specific

On Redox this always returns None.

####
ⓘImportant traits for Incoming<'a>

### Important traits for Incoming<'a>

`impl<'a> Iterator for Incoming<'a> type Item = Result<UnixStream>;`

`pub fn incoming<'a>(&'a self) -> Incoming<'a>`

[src]

This is supported on Unix only.

Returns an iterator over incoming connections.

The iterator will never return `None` and will also not yield the peer's `SocketAddr` structure.

# Examples

    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;
            }
        }
    }Run

## Trait Implementations

###

`impl AsRawFd for UnixListener`

[src]

####

`fn as_raw_fd(&self) -> RawFd`

[src]

This is supported on Unix only.

Extracts the raw file descriptor. Read more

###

`impl FromRawFd for UnixListener`

[src]

####

`unsafe fn from_raw_fd(fd: RawFd) -> UnixListener`

[src]

This is supported on Unix only.

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]

This is supported on Unix only.

Consumes this object, returning the raw underlying file descriptor. Read more

###

`impl Debug for UnixListener`

[src]

####

`fn fmt(&self, fmt: &mut Formatter) -> Result`

[src]

Formats the value using the given formatter. 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?

####
ⓘImportant traits for Incoming<'a>

### Important traits for Incoming<'a>

`impl<'a> Iterator for Incoming<'a> type Item = Result<UnixStream>;`

`fn into_iter(self) -> Incoming<'a>`

[src]

Creates an iterator from a value. Read more

## Auto Trait Implementations

###

`impl Send for UnixListener`

###

`impl Sync for UnixListener`

## Blanket Implementations

###

`impl<T, U> TryFrom for T where T: From<U>,`

[src]

#### `type Error = !`

🔬 This is a nightly-only experimental API. (`try_from` #33417)

The type returned in the event of a conversion error.

####

`fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>`

[src]

🔬 This is a nightly-only experimental API. (`try_from` #33417)

Performs the conversion.

###

`impl<T> From for T`

[src]

####

`fn from(t: T) -> T`

[src]

Performs the conversion.

###

`impl<T, U> TryInto for T where U: TryFrom<T>,`

[src]

#### `type Error = <U as TryFrom<T>>::Error`

🔬 This is a nightly-only experimental API. (`try_from` #33417)

The type returned in the event of a conversion error.

####

`fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>`

[src]

🔬 This is a nightly-only experimental API. (`try_from` #33417)

Performs the conversion.

###

`impl<T, U> Into for T where U: From<T>,`

[src]

####

`fn into(self) -> U`

[src]

Performs the conversion.

###

`impl<T> Borrow for T where T: ?Sized,`

[src]

####
ⓘImportant traits for &'a mut I

### Important traits for &'a mut I

`impl<'a, I> Iterator for &'a mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'a, R: Read + ?Sized> Read for &'a mut Rimpl<'a, W: Write + ?Sized> Write for &'a mut W`

`fn borrow(&self) -> &T`

[src]

Immutably borrows from an owned value. Read more

###

`impl<T> BorrowMut for T where T: ?Sized,`

[src]

####
ⓘImportant traits for &'a mut I

### Important traits for &'a mut I

`impl<'a, I> Iterator for &'a mut I where
I: Iterator + ?Sized, type Item = <I as Iterator>::Item;impl<'a, R: Read + ?Sized> Read for &'a mut Rimpl<'a, W: Write + ?Sized> Write for &'a mut W`

`fn borrow_mut(&mut self) -> &mut T`

[src]

Mutably borrows from an owned value. Read more

###

`impl<T> Any for T where T: 'static + ?Sized,`

[src]

####

`fn get_type_id(&self) -> TypeId`

[src]

🔬 This is a nightly-only experimental API. (`get_type_id` #27745)

this method will likely be replaced by an associated static

Gets the `TypeId` of `self`. Read more

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)