用java解析IBM 3270数据

问题描述 投票:0回答:3

我想知道是否有人有使用 3270 协议检索数据的经验。目前我的理解是:

连接

我需要使用telnet连接到SNA服务器,发出命令,然后将返回一些数据。我不确定这个连接是如何建立的,因为我读到标准的 telnet 连接不起作用。我还了解到 IBM 有一个库可以提供帮助,但没有找到更多相关信息。

解析

我假设返回的数据将是一个 1920 个字符的字符串,因为 3278 屏幕是 80x24 个字符。我只需要将这些字符解析到适当的字段中。我对 3270 协议了解得越多,这种情况似乎就越少 - 我在 Jagacy 3270 Java 库 试用版提供的文档中读到,协议中的属性在属性之前用字符“A”标记我的理解是,有更多的字符表示其他因素,例如字段是否可编辑。

我有理由确信我的想法太简单化了。举一个包含项目列表的屏幕为例 - 在 24 个可见行之一上按特殊键可以深入了解有关该行的更详细信息。

还建议我可以发出打印命令。这有一些积极的影响 - 如果返回的字符串的格式不是 1920,因为它包含这些字符,例如表示用户如何与终端交互的“A”,则打印将消除这些字符。它还将不再需要翻阅大量数据。另一方面是我不知道如何将打印命令中的数据检索回 Java。

所以..

我目前无法访问 SNA 服务器,但有一些屏幕截图,显示一旦我获得连接,终端将是什么样子,因此将开始解析工作。有了这么多的假设,但对数据的样子却没有太多的想法,我感到真的很困惑。有谁了解这些系统可以帮助我重回正轨吗?

java telnet mainframe 3270
3个回答
6
投票

你已经选择了一个问题的解决者。 3270确实是一个非常复杂的协议。我不会费心去尝试实现它,这是一个愚蠢的差事,而且我是从痛苦的个人经历中说出来的。尝试找到 TN3270 (Telnet 3270) 客户端 API。


1
投票

这可能无法具体回答您的问题,但是...

如果您使用 Rational Developer for z/OS,您的 java 代码应该能够使用集成的 HATS 产品来处理 3270 流。它可能不适合您的项目,但我想如果您想做的只是一些简单的屏幕抓取,我想我会提到它,它使事情变得非常简单。


0
投票

@Ross,您提到您已经做了类似的事情,IBMi 或 AS400 上的 Telnet 2370 API 是否有可以通过程序控制的东西?

© www.soinside.com 2019 - 2024. All rights reserved.