Read data from a socket.
zx_status_t zx_socket_read(zx_handle_t handle,
zx_socket_read() attempts to read buffer_size bytes into buffer. If
successful, the number of bytes actually read are return via
If a NULL actual is passed in, it will be ignored.
If the socket was created with
ZX_SOCKET_DATAGRAM, this syscall reads
only the first available datagram in the socket (if one is present).
If buffer is too small for the datagram, then the read will be
truncated, and any remaining bytes in the datagram will be discarded.
Supported options are:
ZX_SOCKET_PEEKto leave the message in the socket.
To determine how many bytes are available to read, use the
field of the resulting
zx_info_socket_t, which you can obtain using the
ZX_INFO_SOCKET topic for
handle must be of type
ZX_OBJ_TYPE_SOCKET and have
ZX_OK on success, and writes into
actual (if non-NULL) the exact number of bytes read.
ZX_ERR_BAD_HANDLE handle is not a valid handle.
ZX_ERR_BAD_STATE writing to handle's peer has been disabled via
zx_socket_set_disposition() and no pending data remains on handle.
ZX_ERR_WRONG_TYPE handle is not a socket handle.
ZX_ERR_INVALID_ARGS If any of buffer or actual are non-NULL
but invalid pointers, or if buffer is NULL, or if options is zero.
ZX_ERR_ACCESS_DENIED handle does not have
ZX_ERR_SHOULD_WAIT The socket contained no data to read.
ZX_ERR_PEER_CLOSED The other side of the socket is closed and no data is