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

第二十章 TCP 客户端 服务器通信 - 立即发送模式(Q 模式)

文章目录

  • 第二十章 TCP 客户端 服务器通信 - 立即发送模式(Q 模式)
    • 立即发送模式(`Q` 模式)
    • 流模式(`S`模式)
    • 缓冲区大小
  • 服务器端`OPEN`命令

第二十章 TCP 客户端 服务器通信 - 立即发送模式(Q 模式)

立即发送模式(Q 模式)

在立即发送模式下,每个 WRITE 命令都作为其自己的数据包输出。如果不使用立即发送模式,则必须包括终止符或发出命令 WRITE *–3 以输出数据包。

通过指定“Q”模式字符或/SENDIMMEDIATE(或/SEN)关键字参数进入此模式。要关闭此选项,请指定以下任一选项:

   USE TCPDEVICE:(/SEN=0)
   USE TCPDEVICE:(::"-Q")

要重新打开此选项,请指定以下任一选项:

   USE TCPDEVICE:(/SEN=1)
   USE TCPDEVICE:(::"+Q")

立即发送模式与/NODELAY模式结合使用,前者在每次写入时创建一个包,后者在创建每个包时立即发送。当这两个选项都启用时,单个数据突发的传输速度将最大化。当每个数据单元的及时传送至关重要时,例如在传输鼠标移动时,这是有用的。当两者都关闭时,一个数据包可能包含多个写入,一个传输可能包含多个数据包。这减少了网络流量并提高了整体性能。立即发送模式的默认设置为关闭。/NODELAY模式的默认设置为打开。

流模式(S模式)

在流模式下, IRIS不会保留数据流中的TCP消息边界。发送时,如果数据不适合消息缓冲区, IRIS会在将数据放入缓冲区之前刷新缓冲区。

接收时,可以接收最大字符串长度的数据。所有读取都等待达到终止符或缓冲区变满的完全超时。当禁用此模式(默认)时,处于数据包模式。

继承 TCP 设备的 Jobbed 进程自动设置为 Stream 格式。可以使用 USE 命令重置格式。

缓冲区大小

TCP 设备的 ibufsizobufsiz 参数指定用于 TCP 输入和输出的内部 IRIS 缓冲区的大小。在所有支持的平台上,它们可以取 1KB1MB 之间的值。然而,操作系统平台可能使用不同大小的输入和输出缓冲区。如果操作系统平台缓冲区小于 IRIS 缓冲区(例如,64KB1MB),性能可能会受到影响:WRITE 操作可能需要多次访问操作系统才能发送整个 IRIS 缓冲区; READ 操作可能会返回受操作系统缓冲区大小限制的较小块。为获得最佳性能,用户应试验当前操作系统以确定 ibufsizobufsiz 的哪些值可产生最佳结果。

服务器端OPEN命令

处理服务器端 OPEN 时,它会建立一个 TCP 套接字并在套接字上侦听适当端口号上的传入连接请求。端口号要么在参数列表中明确指定,要么从设备名称的数字部分派生。在套接字设置为侦听后,OPEN 立即返回。

如果 OPEN 没有成功,则另一个进程可能已经在该端口号上侦听连接请求。

以下服务器端 OPEN 示例显示了一个设备规范,该规范允许读取和写入最大字符串大小的终止字符串,并使用最大长度读取和写入操作来整合 TCP 通道的使用。

   OPEN "|TCP|4":(:4200:"PSTE"::32767:32767)

此示例中的参数参数如下:因为这是服务器端 OPEN,所以省略了第一个参数(主机名)。第二个参数明确指定端口号 (4200)。第三个参数是模式代码字符。第四个参数(终止符)被省略。第五个参数是输入缓冲区大小。第六个参数是输出缓冲区大小。

在以下示例中,端口号未指定为参数;它源自设备名称的数字部分。此示例打开端口 4200,没有指定参数且超时为 10 秒:

   OPEN "|TCP|4200"::10

服务器端 OPEN 的默认输入缓冲区大小 (ibufsiz) 和输出缓冲区大小 (obufsiz) 参数值为 1,048,576 字节 (1 MB)。

服务器端 OPEN 支持可选的队列大小参数和可选的“G”模式参数。这些选项不可用于客户端 OPEN

服务器端OPEN支持可选的/CLOSELISTEN关键字参数。此选项对于客户端OPEN不可用。


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

相关文章:

  • MuMu模拟器安卓12安装Xposed 框架
  • Python小试牛刀:第一次爬虫,获取国家编码名称
  • Postman接口测试(断言、关联、参数化、输出测试报告)
  • Ceph的pool有两种类型
  • QT<30> Qt中使鼠标变为转圈忙状态
  • 第12章 系统部署
  • react的import 导入语句中的特殊符号
  • Cpolar 内网穿透使用
  • 人群计数制作私有数据集教程-----自用
  • 动力商城-03 Idea集成apifox Mybatis-Plus字段策略
  • 前端开发中的CSS框架:昔日辉煌与新兴潮流
  • 电脑不显示wifi列表怎么办?电脑不显示WiF列表的解决办法
  • sychronized锁
  • QT_CONFIG宏使用
  • 【扩散——BFS】
  • 用Python将Word文档转换为Markdown格式
  • 【PyTorch】PyTorch Geometric(PyG)安装指南:如何高效配置图神经网络环境
  • excel-VLOOKUP函数使用/XVLOOKUP使用
  • AUTOSAR_EXP_ARAComAPI的7章笔记(4)
  • 单片机智能家居火灾环境安全检测
  • 蓝桥杯每日真题 - 第14天
  • ubuntu20.04默认的python3.8升级到python3.10
  • 内网、公网(外网)划分
  • 从AI新手到高手:学习提示词,让智能助手更懂你
  • stm32F4 低功耗模式实例解析
  • Ubuntu 的 ROS 2 操作系统 turtlebot3 gazebo仿真