NAME
通訊端 - 雙向串流 IPC 傳輸
概要
通訊端是一種雙向串流傳輸。與管道不同,通訊端只會移動資料 (而非控制)。
說明
資料會透過 zx_socket_write()
寫入通訊端的一端,並透過 zx_socket_read()
從對端讀取。
通訊端建立後,通訊端的兩端都可寫入。只要使用 zx_socket_set_disposition()
系統呼叫,即可使用 ZX_SOCKET_DISPosition_WRITE_ENABLED 和 ZX_SOCKET_DISPosition_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_DISPosition_WRITE_DISABLED。只要通訊端中有在寫入前寫入的資料,這個訊號所引發的通訊端端點讀取就會成功。
這個端點的 ZX_SOCKET_WRITE_DISABLED 寫入功能已停用,因為其配置已設為 ZX_SOCKET_DISPosition_WRITE_DISABLED。若使用這個信號,在通訊端端點上寫入會失敗。
ZX_SOCKET_READ_THRESHOLD 資料在通訊端上排入佇列以用於讀取作業超過讀取閾值。
通訊端用於寫入的 ZX_SOCKET_WRITE_THRESHOLD 空間超過寫入門檻。
音效
zx_socket_create()
- 建立新通訊端zx_socket_read()
- 從通訊端讀取資料zx_socket_set_disposition()
- 設定通訊端的配置zx_socket_write()
- 將資料寫入通訊端