文章目录
- 第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字
- `TCP`设备的`OPEN`和`USE`命令关键字
- `TCP`设备的`OPEN`和`USE`命令关键字
第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字
TCP设备的OPEN和USE命令关键字
可以使用位置参数(如上所述)或关键字参数。下表描述了使用OPEN和USE命令控制TCP设备的关键字。还有其他只能在OPEN命令中指定的OPEN-only关键字(本章稍后将描述)。所有关键字参数都是可选的。
TCP设备的OPEN和USE命令关键字
| Keyword | Default | Description |
|---|---|---|
/ABSTIMEOUT[=1] | 0 | 指定读超时行为。确定TCP在接收到数据时是否应重新初始化超时时间。如果/ABSTIMEOUT=0(默认值),则每次接收数据时timeout都会重置为原始值。如果/ABSTIMEOUT或/ABSTIMEOUT=1,则在接收数据时超时时间继续倒数。 |
/ACCEPT[=n] or /ACC[=n] | 0 | 对应于“A”模式参数字符,该参数指定一旦接受来自客户端作业的连接,服务器上的初始读取就以零长度字符串终止。/ACCEPT和/ACCEPT=n对于n的非零值启用A模式。/ACCEPT=n表示零值n禁用a模式。 |
/CLOSEFLUSH[=n] | 1 | 指定当设备关闭时,对保留在输出缓冲区中的数据的处理。/CLOSEFLUSH和/CLOSEFLUSH=n对于n的非零值将刷新剩余数据。/CLOSEFLUSH=n表示n为零时丢弃剩余数据。 |
/COMPRESS=str | "" | 指定流数据压缩类型。可以启用压缩类型为ZLIB或ZSTD。可以指定/COMPRESS=""来禁用压缩。/COMPRESS="zlib"等价于/GZIP=1。要压缩字符串,使用%SYSTEM.Util.Compress()。 |
/CRLF[=n] | 0 | 对应于“C”模式参数字符,它修改输入和输出时回车的处理。/CRLF和/CRLF=n为n的非零值启用C模式。/CRLF=n对于零值n禁用C模式。 |
/ESCAPE[=n]or/ESC[=n] | 0 | 对应于“E”模式参数字符,它指定输入流中的转义序列被解析并放入$ZB中。/ESCAPE和/ESCAPE=n对于n的非零值启用E模式。/ESCAPE=n对于零值n禁用E模式。 |
/GZIP[=n] | 1 | 指定兼容gzip的流数据压缩。/GZIP或/GZIP=n(对于n的非零值)在WRITE时进行压缩,在READ时进行解压缩。/GZIP=0禁用压缩和解压。在发出/GZIP=0来禁用压缩和解压之前,检查$ZEOS特殊变量以确保流数据读取没有进行。/GZIP压缩对I/O转换没有影响,例如使用/IOTABLE建立的转换。这是因为压缩是在所有其他转换(加密除外)之后应用的,而解压是在所有其他转换(加密除外)之前应用的。 |
/IOTABLE[=name]or/IOT[=name] | 如果不指定name,则使用设备默认的I/O转换表。 | 为设备建立I/O转换表。 |
/KEEPALIVE=n | 系统默认值 | (仅适用于Windows、AIX和Linux)为设备设置不同于系统默认值的保活定时器。一个整数,指定TCP连接保持活跃的秒数。与位置参数keepalivetime相同。有效值为30 ~ 432000。(432000秒等于5天。)小于30的值默认为30。如果省略或设置为0,则使用系统默认值。可以使用/NOKEEPALIVE禁用此设置;一旦禁用,它就不能重新启用,直到这个TCP设备被关闭。 |
/NODELAY=n | 1 | 指定数据包是捆绑发送还是单独发送。如果/NODELAY=1(缺省值),则立即发送每个数据包。如果/NODELAY=0, TCP驱动程序使用优化算法将包捆绑在一起。这可能会对单个数据包造成轻微的传输延迟,但通过减少网络流量,可以提高整体性能。/NODELAY没有对应的模式参数字符。/NODELAY的使用应该与/SENDIMMEDIATE的使用协调。 |
/NOKEEPALIVE | 如果指定该参数,则在此设备上禁用系统级TCP keepalive定时器。 IRIS在打开任何TCP设备时默认启用此定时器;在OPEN或USE上发出/NOKEEPALIVE选项会覆盖这个默认值。如果/KEEPALIVE已被用于设置非默认的KEEPALIVE定时器,/NOKEEPALIVE将禁用该KEEPALIVE定时器。一旦禁用了keepalive定时器,就没有办法重新启用它,直到TCP设备关闭。看到/ KEEPALIVE。 | |
/NOXY[=n] | 0 | 禁止$X和$Y处理:/NOXY或/NOXY=n(对于n的非零值)禁用$X和$Y处理。当设备$X/$Y未被使用时,该选项可以提高性能,例如CSP。它可以极大地提高READ和WRITE操作的性能。此选项是超级服务器工作作业的默认设置。当/NOXY=1时,$X和$Y变量的值是不确定的,保证金处理(取决于$X)被禁用。/NOXY=0启用$X和$Y处理;这是默认值。/TCPNOXY是/NOXY的同义词。 |
/OBCOUNT=n | 16 | 用于/ZEROCOPY的输出缓冲区数量。输出缓冲区的默认数量是16。输出缓冲区的最小数量是2,最大数量是128。n的值必须是2的幂;如果指定了非2的幂值,则将其四舍五入为2的幂。 |
/PAD[=n] | 0 | 对应于" P "模式参数字符,该参数指定当WRITE !(LF结束符)或writ# (FF结束符)被执行。/PAD和/PAD=n为n的非零值启用P模式。/PAD=n对于零值n禁用P模式。 |
/PARAMS=str or /PAR=str | 没有默认 | 对应于模式位置参数。(它提供了一种以位置无关的方式指定模式字符串的方法。) |
/POLL[=n] or /POLLDISCON[=n] | 对应于“D”模式参数字符,它指定断开连接的异步监视。/POLL或/POLL=1对应+D。/POLL=0对应-D。 | |
/PSTE[=n] | 0 | 对应于“M”模式参数字符,这是指定P、S、T和E模式参数字符的一种简便方法。/PSTE和/PSTE=n的非零值n启用P, S, T和E模式。/PSTE=n对于零值n禁用这些模式。 |
/SENDIMMEDIATE[=n] or /SEN[=n] | 0 | 对应于“Q”模式参数字符,它指定发送立即模式。 |
| `/SSL="cfg[ | pw] [ | DNShost]" or /TLS="cfg[ |
/STREAM[=n] or /STR[=n] | 0 | 对应于“S”模式参数字符,它指定了一种不保留 TCP 消息边界的处理数据的流模式。 /STREAM 和 /STREAM=n 对于 n 的非零值启用 S 模式。 /STREAM=n 对于 n 的零值禁用 S 模式。 |
/TCPNOXY | 已弃用。 /NOXY 的同义词。 | |
/TCPRCVBUF=n | 默认接收缓冲区大小 | 设置接收队列缓冲区大小,以字节为单位。可用于从默认值增加缓冲区大小以支持 TCP 协议大窗口。大窗口提高了具有长延迟或非常高带宽的链路的性能。有关适当的值,请参阅您的操作系统/硬件文档。 |
/TCPSNDBUF=n | 默认发送缓冲区大小 | 设置发送队列缓冲区大小,以字节为单位。可用于从默认值增加缓冲区大小以支持 TCP 协议大窗口。大窗口提高了具有长延迟或非常高带宽的链路的性能。 |
/TERMINATOR=str or /TER=str | 无默认 | 对应于 terminators 位置参数,它建立用户定义的终止符。 |
/TMODE[=n] or /TMO[=n] | 0 | 对应“T”模式参数字符,指定CR、LF、FF为标准读终止符。 /TMODE 和 /TMODE=n 对于 n 的非零值启用 T 模式。 /TMODE=n 对于 n 的零值禁用 T 模式。 |
/TRANSLATE[=n] or /TRA[=n] | 1 | /TRANSLATE 或 /TRANSLATE=n 对于 n 的非零值启用设备的 I/O 转换。 /TRANSLATE=n 对于 n 的零值禁用设备的 I/O 转换。 |
/WAIT[=n] | 0 | 对应于“W”模式参数字符,这会导致输出缓冲区不被 WRITE 刷新!和 WRITE # 命令。相反,刷新会等到下一个 WRITE *-3 命令。 /WAIT 和 /WAIT=n 对于 n 的非零值启用 W 模式。 /WAIT=n 对于 n 的零值禁用 W 模式。 |
/WRITETIMEOUT[=n] | 1 | 为TCP写操作建立超时时间(以秒为单位)。如果写操作没有在n秒内完成, IRIS将发出<TCPWRITE>错误。如果发出<TCPWRITE>错误,应用程序应该立即关闭TCP设备以防止数据丢失。在<TCPWRITE>错误后, IRIS将不会尝试TCP写操作。最小n值与系统相关。如果n小于该平台的最小超时值, IRIS将使用该平台的最小超时值。n不能小于2。默认值(-1)表示不强制执行超时。 |
/XYTABLE[=name] or /XYT[=name] | 如果不指定name,则使用设备默认的$X/$Y动作表。 | 为设备建立一个$X/$Y操作表。 |
/ZEROCOPY[=bool] | 0 | 如果指定了/ZEROCOPY或/ZEROCOPY=1,则开启该TCP设备的ZEROCOPY特性。ZEROCOPY支持TCP设备的多个输出缓冲区,以便在send()上利用MSG_ZEROCOPY;TCP设备不能重用输出缓冲区,直到缓冲区被TCP堆栈的通知确认。使用/OBCOUNT关键字为TCP设备设置输出缓冲区的数量。如果指定/ZEROCOPY=0,则关闭此TCP设备的ZEROCOPY特性。Linux 4.15及以上版本支持MSG_ZEROCOPY。如果操作系统不支持MSG_ZEROCOPY,则TCP设备的ZEROCOPY始终处于关闭状态。 |