文章目录
- 第二十八章 TCP 客户端 服务器通信 - JOB命令示例
- JOB命令示例
第二十八章 TCP 客户端 服务器通信 - JOB命令示例
JOB命令示例
以下示例显示了一个非常简单的并发服务器,只要它检测到来自客户端的连接,就会产生一个子作业。 JOB
指定一个并发服务器位开关值(值16
)并通过符号表(值1
):16+1=17
。
serverSET io="|TCP|1" SET ^serverport=7001 OPEN io:(:^serverport:"MA"):200 IF ('$TEST) { WRITE !,"Cannot open server port" QUIT }ELSE { WRITE !,"Server port opened" }
loopUSE io READ x ; Read for accept USE 0 WRITE !,"Accepted connection" JOB child:(:17:io:io) ;Concurrent server bit is on GOTO loop
childWRITE $JOB,! ; Send job id on TCP device to be read by client QUIT
clientSET io="|TCP|2" SET host="127.0.0.1" OPEN io:(host:^serverport:"M"):200 ;Connect to serverIF ('$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 }
子进程使用继承的TCP
连接将其作业ID
(在本例中假设为3个字符)传递回客户机,之后子进程退出。客户端打开与服务器的连接,并在打开的连接上读取子任务的作业ID
。在本例中,变量主机的IPv4
格式值“127.0.0.1
”表示到本地主机的环回连接。如果host
设置为服务器的IP
地址或名称,则可以在与服务器不同的机器上设置客户端。
原则上,子服务器和客户端可以进行扩展通信,多个客户端可以同时与服务器的各自子服务器进行通信。
请注意,这个简单的示例不包含用于检测和处理断开或读取操作失败的逻辑。