# 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> From<T> for T`[src]

#### `fn from(t: T) -> T`[src]

Performs the conversion.

### `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]

Performs the conversion.

### `impl<T, U> Into<U> for T where
U: From<T>,` [src]

#### `fn into(self) -> U`[src]

Performs the conversion.

### `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]

Performs the conversion.

### `impl<T> Borrow<T> for T where
T: ?Sized,` [src]

####
ⓘImportant traits for &'_ mut F

### Important traits for &'_ mut F

`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 Rimpl<W: Write + ?Sized, '_> Write for &'_ mut W`
`fn borrow(&self) -> &T`[src]

Immutably borrows from an owned value. Read more

### `impl<T> BorrowMut<T> for T where
T: ?Sized,` [src]

####
ⓘImportant traits for &'_ mut F

### Important traits for &'_ mut F

`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 Rimpl<W: Write + ?Sized, '_> Write for &'_ 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 type_id(&self) -> TypeId`[src]

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`)