套接字

姓名

套接字 - 双向流式传输 IPC 传输

摘要

套接字是一种双向流传输。与通道不同,套接字只移动数据(而不是句柄)。

说明

数据通过 zx_socket_write() 写入套接字的一端,并通过 zx_socket_read() 从另一端读取数据。

创建后,套接字的两端均可写入。使用 zx_socket_set_disposition() 系统调用时,可以通过 ZX_SOCKET_DISLOAD_WRITE_模式ZX_SOCKET_DISBUTTON_WRITE_DISABLED 单独启用或停用套接字的每一端。

属性

您可从套接字对象查询以下属性:

套接字读取阈值的 ZX_PROP_SOCKET_RX_THRESHOLD 大小(以字节为单位)。当套接字上排队的字节数(可供读取)等于或大于此值时,断言 ZX_SOCKET_READ_THRESHOLD 信号。读取阈值信号默认处于停用状态(设置后,如果为此属性写入 0 值,则会停用该功能)。

套接字写入阈值的 ZX_PROP_SOCKET_TX_THRESHOLD 大小(以字节为单位)。当套接字上可用的写入空间等于或大于此值时,断言 ZX_SOCKET_WRITE_THRESHOLD 信号。写入阈值信号默认处于停用状态(设置后,为此属性写入 0 值会停用该功能)。

从套接字句柄的角度来看,接收缓冲区包含可从该句柄通过 zx_socket_read() 读取的数据(已从对向句柄写入),而传输缓冲区则包含通过 zx_socket_write() 写入该句柄(并可从对方句柄中读取的数据)的数据。

信号

可以为套接字对象设置以下信号:

ZX_SOCKET_READABLE 数据可用于从套接字中读取

ZX_SOCKET_WRITABLE 数据可写入套接字

ZX_SOCKET_PEER_CLOSED 此套接字的另一个端点已关闭。

另一个端点的 ZX_SOCKET_PEER_WRITE_DISABLED 写入已停用,因为其处置方式已设置为 ZX_SOCKET_DISBUTTON_WRITE_DISABLED。只要在写入停用之前写入的套接字中有数据,在该信号引发的套接字端点上读取就会成功。

此端点的 ZX_SOCKET_WRITE_DISABLED 写入功能已停用,因为其处置方式已设置为 ZX_SOCKET_DISEMENT_WRITE_DISABLED。如果套接字端点收到此信号,写入操作将会失败。

在套接字上排队等待读取的 ZX_SOCKET_READ_THRESHOLD 数据超出读取阈值。

套接字上可用于写入的 ZX_SOCKET_WRITE_THRESHOLD 空间超过写入阈值。

系统调用