当前位置: 首页 > article >正文

第十九章 TCP 客户端 服务器通信 - 数据包模式

文章目录

  • 第十九章 TCP 客户端 服务器通信 - 数据包模式
    • 数据包模式
    • 回车模式(`C`模式)
    • 监控断开模式(`D`模式)
    • 转义序列处理模式(`E`模式)

第十九章 TCP 客户端 服务器通信 - 数据包模式

数据包模式

如果未指定模式,则默认为数据包模式。如果流模式被禁用,则该模式默认为分组模式。

在分组模式中,只要有一些数据要返回,读取命令就会完成。数据包模式允许在输出缓冲区中构建整个TCP数据段,然后通过发出WRITE*-3WRITE!命令。

如果在没有要发送的字符的情况下发出WRITE*-1来启动一个TCP发送操作,则会收到一个<WRITE>错误。如果发出WRITE OF空字符串,则会收到<COMMAND>错误。

在分组模式下可以发送的字符串的最大长度为1024个字符。如果在未刷新缓冲区的情况下超过此限制,则会收到<WRITE>错误。

因为 TCP/IP 忽略长度为 0 的记录,所以如果在其中没有字符时刷新写入缓冲区,会收到 <WRITE>错误。

在服务器收到连接请求之前,从服务器到客户端的WRITE命令会在服务器上产生<WRITE> 错误。

回车模式(C模式)

此模式修改对输入和输出的回车处理。

在输出时,WRITE ! 生成“CR LF”,而WRITE#生成“CR FF”

在输入时,在启用T模式的情况下,服务器尝试将相邻的CRLF或相邻的CRFF记录为$ZB中的单个终止符。如果CRLF没有在彼此的短时间间隔内到达,则将它们作为单独的终结器进行处理。默认情况下,间隔为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}

这里使用的句法符号表示:

CodeDesc
:x:y 表示 ASCII 序列中从 xy 的指定范围的字符。
``
[ ]指定指定集合的零个或一个成员。
[ ]*指定指定集合的零个、一个或多个成员。
{ }准确指定指定集合的一个成员。

IRIS 发现 ESCAPE 时,它最多等待 1 秒,等待剩余的转义序列到达。如果转义序列与此语法不匹配,或者如果它超过 15 个字符,或者如果有效的转义序列未在 1 秒内到达, IRIS 将部分转义序列放入 $ZB 并设置“BADESC”位( 256) 在 $ZA


http://www.kler.cn/a/393210.html

相关文章:

  • PHP多门店医疗服务系统小程序源码
  • 如何使用ffmpeg命令行进行录屏
  • 贪心算法入门(二)
  • 【前端学习指南】Vue computed 计算属性 watch 监听器
  • 冗余连接2 hard题 代随C#写法
  • 阿里巴巴通义灵码推出Lingma SWE-GPT:开源模型的性能新标杆
  • 测试体系与测试方案设计
  • 320页PDF | 集团IT蓝图总体规划报告-德勤(限免下载)
  • 基于物联网的家庭自动化系统:使用网络映射器和MQTT协议
  • LuaJIT源码分析(六)语法分析
  • Linux编程:基于 Unix Domain Socket 的进程/线程间通信实时性优化
  • 小程序入门到实战(二)-----基础知识部分1.0
  • ssm079基于SSM框架云趣科技客户管理系统+jsp(论文+源码)_kaic
  • 建设展示型网站企业渠道用户递达
  • SwiftUI-基础入门
  • CSS:导航栏三角箭头
  • AutoML入门
  • 通胀降温遇到波动,美联储降息或成更大争议焦点
  • Eclipse 任务管理
  • MongoDB在现代Web开发中的应用
  • C/C++|关于“子线程在堆中创建了资源但在资源未释放的情况下异常退出或挂掉”如何避免?
  • GxtWaitCursor:Qt下基于RAII的鼠标等待光标类
  • Spring Boot 自动装配原理
  • C++20 STL CookBook 7 Containers(II)
  • Elman 神经网络算法详解
  • 详解kafka消息发送重试机制的案例