第十九章 TCP 客户端 服务器通信 - 数据包模式
数据包模式
如果未指定模式,则默认为数据包模式。如果流模式被禁用,则该模式默认为分组模式。
在分组模式中,只要有一些数据要返回,读取命令就会完成。数据包模式允许在输出缓冲区中构建整个TCP
数据段,然后通过发出WRITE*-3
或WRITE!
命令。
如果在没有要发送的字符的情况下发出WRITE*-1
来启动一个TCP
发送操作,则会收到一个<WRITE>
错误。如果发出WRITE OF
空字符串,则会收到<COMMAND>
错误。
在分组模式下可以发送的字符串的最大长度为1024
个字符。如果在未刷新缓冲区的情况下超过此限制,则会收到<WRITE>
错误。
因为 TCP/IP
忽略长度为 0
的记录,所以如果在其中没有字符时刷新写入缓冲区,会收到 <WRITE>
错误。
在服务器收到连接请求之前,从服务器到客户端的WRITE
命令会在服务器上产生<WRITE>
错误。
回车模式(C
模式)
此模式修改对输入和输出的回车处理。
在输出时,WRITE !
生成“CR LF”
,而WRITE#
生成“CR FF”
。
在输入时,在启用T
模式的情况下,服务器尝试将相邻的CR
和LF
或相邻的CR
和FF
记录为$ZB
中的单个终止符。如果CR
和LF
没有在彼此的短时间间隔内到达,则将它们作为单独的终结器进行处理。默认情况下,间隔为1
秒。
监控断开模式(D
模式)
此模式打开或关闭异步断开监控。通过指定“D”
模式字符或/POLLDISCON
关键字参数来激活此模式。当指定+D
时,将激活TCP
断开监视;当指定-D
时,将停用TCP
断开监视。
当被激活时,IRIS
大约每隔60
秒轮询一次TCP
连接。当检测到断开连接时,IRIS
会发出一个<DISCONNECT>
错误。在空闲作业中不会发生断开连接检测,例如被挂起命令挂起的作业或等待读取操作的作业。 IRIS
在回滚操作期间挂起所有断开监视,以防止发出错误。回滚结束后, IRIS
将恢复断开连接监视。此挂起既适用于激活了断开监控的当前TCP
设备,也适用于连接到启用了断开监控的TCP
设备的未启用断开监控的当前设备。
还可以使用 %SYSTEM.INetInfo
类的 Connected()
方法检查 TCP
断开连接。
转义序列处理模式(E
模式)
当设置 E
模式时,输入流中的转义序列被解析并放入 $ZB
特殊变量中。转义序列不得超过 15
个字符,并且必须符合以下语法:
esc_seq::=type1 | type2
type1 ::= '['['0':'?']*['':'/']*{'@':DEL}
type2 ::= [';'|'?'|'O']['':'/']*{'0':DEL}
这里使用的句法符号表示:
Code | Desc | ||
---|---|---|---|
: |
x:y 表示 ASCII 序列中从 x 到 y 的指定范围的字符。 |
||
` | ` | `x | y表示指定 x或 y`。 |
[ ] |
指定指定集合的零个或一个成员。 | ||
[ ]* |
指定指定集合的零个、一个或多个成员。 | ||
{ } |
准确指定指定集合的一个成员。 |
当 IRIS
发现 ESCAPE
时,它最多等待 1
秒,等待剩余的转义序列到达。如果转义序列与此语法不匹配,或者如果它超过 15
个字符,或者如果有效的转义序列未在 1
秒内到达, IRIS
将部分转义序列放入 $ZB
并设置“BADESC”
位( 256
) 在 $ZA
。