第二十六章 TCP 客户端 服务器通信 - $ZB 和 READ 命令
文章目录
- 第二十六章 TCP 客户端 服务器通信 - $ZB 和 READ 命令
- `$ZB` 和 `READ` 命令
- `TCP` 设备的 `WRITE` 命令
- `WRITE`如何工作
- `WRITE` 修改 `$X` 和 `$Y`
- `WRITE`命令错误
- `WRITE`控制命令
第二十六章 TCP 客户端 服务器通信 - $ZB 和 READ 命令
$ZB
和 READ
命令
$ZB
保存终止读取的字符。该字符可以是以下之一:
- 终止字符,例如回车
- 固定长度
READ x#y
的第y
个字符 READ *X
的单个字符- 定时读取过期后的空字符串
- 转义序列
- 请注意,如果一个字符串以
CR LF
结尾,则只有CR
会放在$ZB
中。
TCP
设备的 WRITE
命令
在使用 OPEN
和 USE
建立连接后,WRITE
命令将数据从客户端或服务器发送到 TCP
设备。
语法如下:
WRITE x
WRITE !
WRITE #
WRITE
如何工作
WRITE x
在建立连接后将 x
从客户端或服务器发送到缓冲区。
WRITE !
和 WRITE #
不表示换行和换页。相反,它们告诉 IRIS
刷新缓冲区中保留的所有字符,并通过网络将它们发送到目标系统。
可以使用 %SYSTEM.INetInfo
类的 TCPStats()
方法确定当前 TCP
连接执行的写入次数。
WRITE
修改 $X
和 $Y
IRIS
将缓冲区中的字符数存储在 $X
特殊变量中。
ASCII
字符 <return>
和<line feed>
不包括在此计数中,因为它们不被视为记录的一部分。用 WRITE
刷新缓冲区!将 $X
重置为 0
,并将 $Y
的值增加 1
。使用 WRITE #
刷新缓冲区将 ASCII 字符 <form feed>
作为单独的记录写入,并将 $Y
重置为 0
。
WRITE
命令错误
在以下任何情况下,都可能收到 <WRITE>
错误。
- 如果超过最大字符串大小(
1024
个字符)而不刷新缓冲区。 - 如果在其中没有字符时刷新写入缓冲区(
TCP/IP
忽略长度为0
的记录)。 - 如果在服务器收到来自客户端的连接请求之前从服务器向客户端发送
WRITE
命令。 (IRIS
在服务器上产生<WRITE>
错误。)
WRITE
控制命令
TCP
绑定设备支持一系列具有 WRITE *-n
语法的控制命令。
WRITE *-2
- 在当前连接到客户端的服务器模式会话上,此命令会断开与会话的连接。要接受新会话,可以在设备上执行新的READ
命令。WRITE *-3
- 将任何缓冲的输出发送出TCP
连接;即,对输出缓冲区中的数据执行TCP SEND
操作。如果数据是压缩(/GZIP
)流数据,*-3
发送数据时不标记压缩端点。将$X
重置为0
。将$Y
加 1。如果没有缓冲输出,则此命令不执行任何操作。WRITE *-99
- 发送压缩 (/GZIP
) 流数据。首先用压缩端点标记输出缓冲区中的数据,然后通过对输出缓冲区数据执行TCP SEND
操作来发送此压缩流数据。