姓名
套接字 - 双向流式传输 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 空间超过写入阈值。
系统调用
zx_socket_create()
- 创建一个新套接字zx_socket_read()
- 从套接字读取数据zx_socket_set_disposition()
- 设置套接字的处置方式zx_socket_write()
- 将数据写入套接字