zx_socket_write

摘要

将数据写入套接字。

声明

#include <zircon/syscalls.h>

zx_status_t zx_socket_write(zx_handle_t handle,
                            uint32_t options,
                            const void* buffer,
                            size_t buffer_size,
                            size_t* actual);

说明

zx_socket_write() 尝试向套接字写入 buffer_size 字节 由 handle 指定。如果 buffer_size 为 ,则指向 bytes 的指针可能为 NULL 零。

如果传入 NULL actual,则将忽略它。

如果 ZX_SOCKET_STREAM 套接字写入中没有 所有缓冲区都有足够的空间。如果写入了非零数据量, 套接字,通过 actual 返回写入的数量,并且调用成功。 否则,如果套接字已满,调用将返回 ZX_ERR_SHOULD_WAIT,并且客户端应等待(例如, zx_object_wait_one()zx_object_wait_async())。

ZX_SOCKET_DATAGRAM 套接字写入永不短时间。如果套接字具有 缓冲区空间不足,则不会写入任何内容并返回 ZX_ERR_SHOULD_WAIT。如果写入成功,系统会通过以下方法返回 buffer_sizeactual。尝试写入的数据包大于数据报套接字的 容量将失败并显示 ZX_ERR_OUT_OF_RANGE

权限

handle 的类型必须为 ZX_OBJ_TYPE_SOCKET 且包含 ZX_RIGHT_WRITE

返回值

如果成功,zx_socket_write() 会返回 ZX_OK

错误

ZX_ERR_BAD_HANDLE handle 不是有效的句柄。

已通过以下方式对此套接字端点停用 ZX_ERR_BAD_STATE 写入: zx_socket_set_disposition()

ZX_ERR_WRONG_TYPE handle 不是套接字句柄。

ZX_ERR_INVALID_ARGS buffer 是无效的指针。

ZX_ERR_ACCESS_DENIED 句柄没有 ZX_RIGHT_WRITE

ZX_ERR_SHOULD_WAIT:套接字的底层缓冲区已满。

ZX_ERR_OUT_OF_RANGE:使用 ZX_SOCKET_DATAGRAM 创建套接字, buffer 大于套接字中的剩余空间。

ZX_ERR_PEER_CLOSED 插座的另一端是关闭的。

ZX_ERR_NO_MEMORY 因内存不足而失败。 用户空间没有好办法处理这种(不太可能)错误。 在将来的版本中,此错误不会再发生。

另请参阅