Q語言 - 程序間通訊



KDB+允許一個程序透過程序間通訊與另一個程序通訊。Kdb+程序可以連線到同一臺計算機、同一網路甚至遠端的任何其他kdb+。我們只需要指定埠,然後客戶端就可以與該埠通訊。任何q程序都可以與任何其他q程序通訊,只要它在網路上可訪問並且正在監聽連線。

  • 伺服器程序監聽連線並處理任何請求

  • 客戶端程序啟動連線並將命令傳送到要執行的程序

客戶端和伺服器可以在同一臺機器上,也可以在不同的機器上。一個程序既可以是客戶端,也可以是伺服器。

通訊可以是:

  • 同步的(等待返回結果)

  • 非同步的(無需等待,也不返回結果)

初始化伺服器

q伺服器透過指定要監聽的埠來初始化:

q –p 5001 / command line
\p 5001   / session command

通訊控制代碼

通訊控制代碼是一個以“:”開頭的符號,其格式如下:

`:[server]:port-number

示例

`::5001              / server and client on same machine
`:jack:5001          / server on machine jack
`:192.168.0.156      / server on specific IP address
`:www.myfx.com:5001  / server at www.myfx.com

要啟動連線,我們使用返回整數連線控制代碼的函式“hopen”。此控制代碼用於所有後續的客戶端請求。例如:

q)h:hopen `::5001

q)h"til 5"
0 1 2 3 4

q)hclose h

同步和非同步訊息

一旦我們有了控制代碼,我們就可以同步或非同步地傳送訊息。

同步訊息 - 傳送訊息後,它會等待並返回結果。其格式如下:

handle “message”

非同步訊息 - 傳送訊息後,立即開始處理下一條語句,無需等待並返回結果。其格式如下:

neg[handle] “message”

需要響應的訊息,例如函式呼叫或選擇語句,通常使用同步形式;而不需要返回輸出的訊息,例如將更新插入到表中,將是非同步的。

廣告
© . All rights reserved.