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

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

    pub struct UnixDatagram(_);

A Unix datagram socket.

# Examples

    use std::os::unix::net::UnixDatagram;

    let socket = UnixDatagram::bind("/path/to/my/socket").unwrap();
    socket.send_to(b"hello world", "/path/to/other/socket").unwrap();
    let mut buf = [0; 100];
    let (count, address) = socket.recv_from(&mut buf).unwrap();
    println!("socket {:?} sent {:?}", address, &buf[..count]);Run

## Methods

### `impl UnixDatagram`
[src]

#### `fn bind<P: AsRef<Path>>(path: P) -> Result<UnixDatagram>`

Creates a Unix datagram socket bound to the given path.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = match UnixDatagram::bind("/path/to/the/socket") {
        Ok(sock) => sock,
        Err(e) => {
            println!("Couldn't bind: {:?}", e);
            return
        }
    };Run

#### `fn unbound() -> Result<UnixDatagram>`

Creates a Unix Datagram socket which is not bound to any address.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = match UnixDatagram::unbound() {
        Ok(sock) => sock,
        Err(e) => {
            println!("Couldn't unbound: {:?}", e);
            return
        }
    };Run

#### `fn pair() -> Result<(UnixDatagram, UnixDatagram)>`

Create an unnamed pair of connected sockets.

Returns two `UnixDatagrams`s which are connected to each other.

# Examples

    use std::os::unix::net::UnixDatagram;

    let (sock1, sock2) = match UnixDatagram::pair() {
        Ok((sock1, sock2)) => (sock1, sock2),
        Err(e) => {
            println!("Couldn't unbound: {:?}", e);
            return
        }
    };Run

#### `fn connect<P: AsRef<Path>>(&self, path: P) -> Result<()>`

Connects the socket to the specified address.

The `send` method may be used to send data to the specified address. `recv` and `recv_from` will only receive data from that address.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    match sock.connect("/path/to/the/socket") {
        Ok(sock) => sock,
        Err(e) => {
            println!("Couldn't connect: {:?}", e);
            return
        }
    };Run

#### `fn try_clone(&self) -> Result<UnixDatagram>`

Creates a new independently owned handle to the underlying socket.

The returned `UnixDatagram` 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 side will affect the other.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::bind("/path/to/the/socket").unwrap();

    let sock_copy = sock.try_clone().expect("try_clone failed");Run

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

Returns the address of this socket.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::bind("/path/to/the/socket").unwrap();

    let addr = sock.local_addr().expect("Couldn't get local address");Run

#### `fn peer_addr(&self) -> Result<SocketAddr>`

Returns the address of this socket's peer.

The `connect` method will connect the socket to a peer.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    sock.connect("/path/to/the/socket").unwrap();

    let addr = sock.peer_addr().expect("Couldn't get peer address");Run

#### `fn recv_from(&self, buf: &mut [u8]) -> Result<(usize, SocketAddr)>`

Receives data from the socket.

On success, returns the number of bytes read and the address from whence the data came.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    let mut buf = vec![0; 10];
    match sock.recv_from(buf.as_mut_slice()) {
        Ok((size, sender)) => println!("received {} bytes from {:?}", size, sender),
        Err(e) => println!("recv_from function failed: {:?}", e),
    }Run

#### `fn recv(&self, buf: &mut [u8]) -> Result<usize>`

Receives data from the socket.

On success, returns the number of bytes read.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::bind("/path/to/the/socket").unwrap();
    let mut buf = vec![0; 10];
    sock.recv(buf.as_mut_slice()).expect("recv function failed");Run

#### `fn send_to<P: AsRef<Path>>(&self, buf: &[u8], path: P) -> Result<usize>`

Sends data on the socket to the specified address.

On success, returns the number of bytes written.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    sock.send_to(b"omelette au fromage", "/some/sock").expect("send_to function failed");Run

#### `fn send(&self, buf: &[u8]) -> Result<usize>`

Sends data on the socket to the socket's peer.

The peer address may be set by the `connect` method, and this method will return an error if the socket has not already been connected.

On success, returns the number of bytes written.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    sock.connect("/some/sock").expect("Couldn't connect");
    sock.send(b"omelette au fromage").expect("send_to function failed");Run

#### `fn set_read_timeout(&self, timeout: Option<Duration>) -> Result<()>`

Sets the read timeout for the socket.

If the provided value is `None`, then `recv` and `recv_from` calls will block indefinitely. It is an error to pass the zero `Duration` to this method.

# Examples

    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_read_timeout(Some(Duration::new(1, 0))).expect("set_read_timeout function failed");Run

#### `fn set_write_timeout(&self, timeout: Option<Duration>) -> Result<()>`

Sets the write timeout for the socket.

If the provided value is `None`, then `send` and `send_to` calls will block indefinitely. It is an error to pass the zero `Duration` to this method.

# Examples

    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_write_timeout(Some(Duration::new(1, 0)))
        .expect("set_write_timeout function failed");Run

#### `fn read_timeout(&self) -> Result<Option<Duration>>`

Returns the read timeout of this socket.

# Examples

    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_read_timeout(Some(Duration::new(1, 0))).expect("set_read_timeout function failed");
    assert_eq!(sock.read_timeout().unwrap(), Some(Duration::new(1, 0)));Run

#### `fn write_timeout(&self) -> Result<Option<Duration>>`

Returns the write timeout of this socket.

# Examples

    use std::os::unix::net::UnixDatagram;
    use std::time::Duration;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_write_timeout(Some(Duration::new(1, 0)))
        .expect("set_write_timeout function failed");
    assert_eq!(sock.write_timeout().unwrap(), Some(Duration::new(1, 0)));Run

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

Moves the socket into or out of nonblocking mode.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    sock.set_nonblocking(true).expect("set_nonblocking function failed");Run

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

Returns the value of the `SO_ERROR` option.

# Examples

    use std::os::unix::net::UnixDatagram;

    let sock = UnixDatagram::unbound().unwrap();
    if let Ok(Some(err)) = sock.take_error() {
        println!("Got error: {:?}", err);
    }Run

#### `fn shutdown(&self, how: Shutdown) -> Result<()>`

Shut down the read, write, or both halves of this connection.

This function will cause all pending and future I/O calls on the specified portions to immediately return with an appropriate value (see the documentation of `Shutdown`).

    use std::os::unix::net::UnixDatagram;
    use std::net::Shutdown;

    let sock = UnixDatagram::unbound().unwrap();
    sock.shutdown(Shutdown::Both).expect("shutdown function failed");Run

## Trait Implementations

### `impl Debug for UnixDatagram`
[src]

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

Formats the value using the given formatter.

### `impl AsRawFd for UnixDatagram`
[src]

#### `fn as_raw_fd(&self) -> RawFd`

Extracts the raw file descriptor. Read more

### `impl FromRawFd for UnixDatagram`
[src]

#### `unsafe fn from_raw_fd(fd: RawFd) -> UnixDatagram`

Constructs a new instance of `Self` from the given raw file descriptor. Read more

### `impl IntoRawFd for UnixDatagram`
[src]

#### `fn into_raw_fd(self) -> RawFd`

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

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand 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`)