文章目录
- 第二十八章 TCP 客户端 服务器通信 - JOB命令示例
- JOB命令示例
第二十八章 TCP 客户端 服务器通信 - JOB命令示例
JOB命令示例
以下示例显示了一个非常简单的并发服务器,只要它检测到来自客户端的连接,就会产生一个子作业。 JOB
指定一个并发服务器位开关值(值16
)并通过符号表(值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 }
子进程使用继承的TCP
连接将其作业ID
(在本例中假设为3个字符)传递回客户机,之后子进程退出。客户端打开与服务器的连接,并在打开的连接上读取子任务的作业ID
。在本例中,变量主机的IPv4
格式值“127.0.0.1
”表示到本地主机的环回连接。如果host
设置为服务器的IP
地址或名称,则可以在与服务器不同的机器上设置客户端。
原则上,子服务器和客户端可以进行扩展通信,多个客户端可以同时与服务器的各自子服务器进行通信。
请注意,这个简单的示例不包含用于检测和处理断开或读取操作失败的逻辑。