使用 Telnet 出口点程序
通过使用出口程序,经验丰富的程序员可以在应用程序期间创建定制处理。 如果 Telnet 服务器找到向该服务器的其中一个出口点注册的程序,那么它将使用该出口点定义的参数来调用该程序。
出口点 是 Telnet 程序中的特定点,控制权可能会传递到出口程序。 出口程序 是出口点向其传递控制权的程序。
对于每个出口点,都有一个关联的编程接口,称为 出口点接口。 出口点使用此接口在 Telnet 应用程序与出口程序之间传递信息。 每个出口点都具有唯一名称。 每个出口点接口都有一个出口点格式名称,用于定义如何在 Telnet 应用程序与客户编写的出口程序之间传递信息。
不同的出口点可以共享相同的出口点接口。 在这种情况下,多个出口点可以调用单个出口程序。
出口点性能
初始会话请求的 Telnet 服务器响应时间包括服务器调用,处理和返回 QIBM_QTG_DEVINIT 出口程序所需的任何时间。 如果出口程序正在执行重要处理,那么性能影响可能会导致在建立会话之前等待更长时间。 如果要修改用户出口程序的缺省 60 秒超时值,那么可以使用 ADDEXITPGM 命令来添加读取为超时值的用户数据。 在以下示例中, PGMDTA 参数覆盖缺省 60 秒超时到 10 秒:
ADDEXITPGM EXITPNT(QIBM_QTG_DEVINIT) FORMAT(INIT0100)
PGMNBR(1) PGM(USEREXIT/DEVINIT2) REPLACE(*YES)
CRTEXITPNT(*NO) PGMDTA(*JOB *CALC 10)
通过登录窗口或其他 IBM i 模式建立 Telnet 程序后,性能不会受到影响。 发生此情况时,出口程序不再位于 Telnet 路径中。 由于 QIBM_QTG_DEVINIT 出口程序,已建立的 Telnet 会话不会迂到任何延迟。
没有与断开会话的连接相关联的用户可见性能影响。 断开连接意味着结束终端仿真会话,而不是注销并返回到登录面板。 如果断开连接,那么将调用 QIBM_QTG_DEVTERM 出口程序,这将执行会话的断开连接处理。 用户无法看到此消息,因为连接中断后会发生此消息。
工作管理
您可以使用 Telnet 出口程序来解决关键工作管理问题。 这些问题包括能够请求 QPADEVxxxx以外的设备描述,打开交互式虚拟工作站作业的工作管理控制的门,以及将这些作业路由到特定子系统。
子系统路由和设备名选择
用户可以利用更好的 Telnet 虚拟设备名称并配置其交互式子系统以细分工作。 这是通过使用 "添加工作站项" (ADDWSE) 命令完成的。 此命令允许您指定子系统应该或不应该分配虚拟终端设备的特定名称的设备。
以下命令具有 QINTER 分配所有 QPADEV* 工作站,这意味着所有此类设备都路由到 QINTER 子系统:
ADDWSE SBSD(QINTER) WRKSTN(QPADEV*) AT(*SIGNON)
以下命令具有未分配所有 QPADEV* 工作站的 QINTER ,这意味着可以将这些设备分配给其他子系统:
ADDWSE SBSD(QINTER) WRKSTN(QPADEV*) AT(*ENTER)
用户可以开发自己的设备命名约定来细分工作。 例如,一种细分是将某些设备路由到两个位置的本地语言支持 (NLS) 相关子系统。
示例
这两个用户分别在芝加哥和纽约。 根据用户的地理位置,将其分配给子系统 CHICAGO 或 NEWNYE。 此示例的特征包括:
- 芝加哥的 IP 地址以 1.2.3. * 开头。
- 纽约的 IP 地址以 2.3.4. * 开头。
- 为了使所有芝加哥 Telnet 会话在 CHICAGO 子系统中运行,将使用用户出口程序。 出口程序将为来自 1.2.3的所有 Telnet 连接创建以 "CHICAGO" 开头的虚拟设备名。 用户出口程序还会为来自 2.3.4的所有连接创建以 "NEW纽约" 开头的虚拟设备名。
- 用户出口程序为 IP 地址 1.2.3.47分配虚拟设备名 "CHICAGO01"。 程序为来自 2.3.4.48的 IP 地址分配虚拟设备名 "NEWYORK01"。 程序附加变量部分 ("01" , "02" 等) 到根名称 "CHICAGO" ,并在将设备分配给当前用户之前检查该设备是否尚未使用。
要确保虚拟设备 CHICAGO01 进入子系统 Chicago , NEWYORK01 进入子系统 New York ,请按如下所示设置工作站条目:
ADDWSE SBSD(QINTER) WRKSTN(CHICAGO*) AT(*ENTER)
ADDWSE SBSD(QINTER) WRKSTN(NEWYORK*) AT(*ENTER)
ADDWSE SBSD(CHICAGO) WRKSTN(CHICAGO*) AT(*SIGNON)
ADDWSE SBSD(NEWYORK) WRKSTN(NEWYORK*) AT(*SIGNON)