Socket


英文原文快照


名称

Socket —— 双向的流式IPC传输

概要

socket是双向的流式传输。与channel的不同之处在于,socket仅能传输数据(而不移动句柄)。

描述

通过zx_socket_write写入数据到socket的一端,并通过zx_socket_read从相对端点读取。

创建时,socket的两端都是可写和可读的。 通过zx_socket_write的ZX_SOCKET_SHUTDOWN_READ和ZX_SOCKET_SHUTDOWN_WRITE选项,可以关闭socket的一端以禁用从这一端读取和/或写入数据。

属性

可从socket对象查询以下属性:

ZX_PROP_SOCKET_RX_BUF_MAX:socket接收缓冲区的最大大小,以字节为单位。由于额外的开销,接收缓冲区可能在小于最大容量时候就已经变满。

ZX_PROP_SOCKET_RX_BUF_SIZE:socket接收缓冲区的大小,以字节为单位。

ZX_PROP_SOCKET_TX_BUF_MAX:socket发送缓冲区的最大大小,以字节为单位。由于额外的开销,发送缓冲区可能在小于最大容量时候就已经变满。

ZX_PROP_SOCKET_TX_BUF_SIZE:socket发送缓冲区的大小,以字节为单位。

从socket句柄的角度来看,接收缓冲区包含可通过zx_socket_read() 读取(从相对端点的句柄写入的)数据,同时发送缓冲区包含可通过zx_socket_write() 写入(可从相对端点的句柄读取)的数据。

信号

下列信号可以被设置于socket对象之上:

ZX_SOCKET_READABLE:可从socket中读取数据

ZX_SOCKET_WRITABLE:可将数据写入socket

ZX_SOCKET_PEER_CLOSED:socket的相对端点已关闭。

ZX_SOCKET_SHUTDOWN_READ:由于传递ZX_SOCKET_READ_DISABLED 到此端点或将ZX_SOCKET_SHUTDOWN_WRITE 传递到相对端点,此端点被永久禁用读取(除了已缓冲的数据)。但在禁用读取之前写入socket中的数据,读取socket依然会返回成功。

ZX_SOCKET_WRITE_DISABLED:因为将ZX_SOCKET_SHUTDOWN_WRITE传递给此端点或将ZX_SOCKET_SHUTDOWN_READ传递给相对端点,此端点永久禁用数据写入。

ZX_SOCKET_CONTROL_READABLE:可从socket控制面读取数据。

ZX_SOCKET_CONTROL_WRITABLE:可将数据写入到socket控制面中。

ZX_SOCKET_SHARE:可以通过zx_socket_share发送socket。

ZX_SOCKET_ACCEPT:可以通过zx_socket_accept接收socket。

系统调用