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

    pub struct UnixDatagram(_);

Unstable (`unix_socket` #32312)

: newly added

A Unix datagram socket.

# Examples

#![feature(unix_socket)] fn main() { 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]); }

    #![feature(unix_socket)]

    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]);

## Methods

### `impl UnixDatagram`

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

Unstable (`unix_socket` #32312)

: newly added

Creates a Unix datagram socket bound to the given path.

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

Unstable (`unix_socket` #32312)

: newly added

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

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

Unstable (`unix_socket` #32312)

: newly added

Create an unnamed pair of connected sockets.

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

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the address of this socket.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the address of this socket's peer.

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

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

Unstable (`unix_socket` #32312)

: newly added

Receives data from the socket.

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

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

Unstable (`unix_socket` #32312)

: newly added

Receives data from the socket.

On success, returns the number of bytes read.

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

Unstable (`unix_socket` #32312)

: newly added

Sends data on the socket to the specified address.

On success, returns the number of bytes written.

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the read timeout of this socket.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the write timeout of this socket.

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

Unstable (`unix_socket` #32312)

: newly added

Moves the socket into or out of nonblocking mode.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the value of the `SO_ERROR` option.

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

Unstable (`unix_socket` #32312)

: newly added

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

### `impl UnixDatagram`

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

Unstable (`unix_socket` #32312)

: newly added

Creates a Unix datagram socket bound to the given path.

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

Unstable (`unix_socket` #32312)

: newly added

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

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

Unstable (`unix_socket` #32312)

: newly added

Create an unnamed pair of connected sockets.

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

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the address of this socket.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the address of this socket's peer.

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

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

Unstable (`unix_socket` #32312)

: newly added

Receives data from the socket.

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

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

Unstable (`unix_socket` #32312)

: newly added

Receives data from the socket.

On success, returns the number of bytes read.

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

Unstable (`unix_socket` #32312)

: newly added

Sends data on the socket to the specified address.

On success, returns the number of bytes written.

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

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.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the read timeout of this socket.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the write timeout of this socket.

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

Unstable (`unix_socket` #32312)

: newly added

Moves the socket into or out of nonblocking mode.

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

Unstable (`unix_socket` #32312)

: newly added

Returns the value of the `SO_ERROR` option.

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

Unstable (`unix_socket` #32312)

: newly added

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

## Trait Implementations

### `impl Debug for UnixDatagram`

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

### `impl AsRawFd for UnixDatagram`

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

### `impl FromRawFd for UnixDatagram`

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

### `impl IntoRawFd for UnixDatagram`

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

### `impl Debug for UnixDatagram`

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

### `impl AsRawFd for UnixDatagram`

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

### `impl FromRawFd for UnixDatagram`

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

### `impl IntoRawFd for UnixDatagram`

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

# 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

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