文章目录
- [第二十六章 TCP 客户端 服务器通信 - ZB 和 READ 命令](#第二十六章 TCP 客户端 服务器通信 - ZB 和 READ 命令)
- 
- 
- [`ZB\` 和 \`READ\` 命令](#`ZB` 和 `READ` 命令)
 
 
- 
- [`TCP` 设备的 `WRITE` 命令](#TCP设备的WRITE命令)
- 
- `WRITE`如何工作
- [`WRITE` 修改 `X\` 和 \`Y`](#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操作来发送此压缩流数据。