第二十八章 TCP 客戶端 服務(wù)器通信 - JOB命令示例
JOB命令示例
以下示例顯示了一個(gè)非常簡(jiǎn)單的并發(fā)服務(wù)器,只要它檢測(cè)到來自客戶端的連接渔嚷,就會(huì)產(chǎn)生一個(gè)子作業(yè)。 JOB
指定一個(gè)并發(fā)服務(wù)器位開關(guān)值(值16
)并通過符號(hào)表(值1
):16+1=17
稠曼。
server
SET io="|TCP|1"
SET ^serverport=7001
OPEN io:(:^serverport:"MA"):200
IF ('$TEST) {
WRITE !,"Cannot open server port"
QUIT }
ELSE { WRITE !,"Server port opened" }
loop
USE io READ x ; Read for accept
USE 0 WRITE !,"Accepted connection"
JOB child:(:17:io:io) ;Concurrent server bit is on
GOTO loop
child
WRITE $JOB,! ; Send job id on TCP device to be read by client
QUIT
client
SET io="|TCP|2"
SET host="127.0.0.1"
OPEN io:(host:^serverport:"M"):200 ;Connect to server
IF ('$TEST) {
WRITE !,"cannot open connection" Quit }
ELSE {
WRITE !,"Client connection opened"
USE io READ x#3:200 ;Reads from subjob
}
IF ('$TEST) {
WRITE !,"No message from child"
CLOSE io
QUIT }
ELSE {
USE 0 WRITE !,"Child is on job ",x
CLOSE io
QUIT }
子進(jìn)程使用繼承的TCP
連接將其作業(yè)ID
(在本例中假設(shè)為3個(gè)字符)傳遞回客戶機(jī)形病,之后子進(jìn)程退出客年。客戶端打開與服務(wù)器的連接漠吻,并在打開的連接上讀取子任務(wù)的作業(yè)ID
量瓜。在本例中,變量主機(jī)的IPv4
格式值“127.0.0.1
”表示到本地主機(jī)的環(huán)回連接途乃。如果host
設(shè)置為服務(wù)器的IP
地址或名稱绍傲,則可以在與服務(wù)器不同的機(jī)器上設(shè)置客戶端。
原則上耍共,子服務(wù)器和客戶端可以進(jìn)行擴(kuò)展通信烫饼,多個(gè)客戶端可以同時(shí)與服務(wù)器的各自子服務(wù)器進(jìn)行通信。
請(qǐng)注意试读,這個(gè)簡(jiǎn)單的示例不包含用于檢測(cè)和處理斷開或讀取操作失敗的邏輯杠纵。