第二十二章 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[ | pw] [ | DNShost]"` | 没有默认 | 来自客户端,指定设备根据客户端指定的配置和服务器需求尝试协商SSL/ tls 安全连接。当将套接字作为服务器保护时,根据服务器指定的配置和任何客户端要求指定服务器需要SSL/ tls 安全的连接。cfg 指定连接或套接字的配置名称。 pw 指定可选的私钥文件密码。 DNShost 指定特定服务器的完全限定 DNS 主机名,用于服务器名称指示 (SNI) TLS 扩展。详情见下文。此配置名称仅在 OPEN 或 USE 命令后第一次执行 I/O 时使用。随后的调用将被忽略。 /SSL="" 或 /TLS="" 将被忽略。重要提示:使用 SSL/TLS 打开新的或保护现有 TCP 连接时包含密码的功能仅供实时交互使用。你不应该在没有保护的情况下持久存储私钥密码。如果需要存储此类密码,请在类中使用 Security.SSLConfigs 的 PrivateKeyPassword 属性。 |
/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 始终处于关闭状态。 |