一个特别的问题:有没有直接的方法来建立AS400连接,或者你必须通过PHP?我不必读取DB2上的数据,而是执行各种命令(wrkactjob、wrksyssts等(。。。。对不起英国人。我的想法(也许无法做到(是这样的:在应用程序屏幕上有按钮,每个按钮执行一个命令(wrkactjob、clroutq等(,答案出现在另一个屏幕上。。。我不想像在5250或telnet 上那样直接编写命令
从您的推荐到典型的"健康检查";程序,如wrkactjob和wrksyssts我想你的主要目标是在基于Android的手机上运行一个应用程序,无论你身在何处,都可以快速检查机器的状态。对的
当你在路上没有连接到本地WiFi时,你有没有考虑过如何访问机器的IP地址?
您可以访问此";性能数据";正如John Y所指出的,通过SQL,并在移动设备上以任何方便的方式显示它。但我非常怀疑安卓系统是否提供ODBC基础设施,尽管您可能会设法从IBM获得正确的ODBC驱动程序二进制块(CPU方面(,但这一点在安卓系统中很糟糕。
否则,如果您想要UI元素而不是文本输出,您需要创建一种机制来抓取屏幕上显示的内容,并将文本表示转换为Flutter提供的UI元素。
如果您已经怀疑不能使用Flutter进行telnet,我认为在考虑如何开始开发应用程序之前,您必须了解Flutter作为SDK的许多知识。TCP/IP网络服务是底层操作系统的一个功能,您必须通过所有Flutter抽象层才能最终构建TCP会话。幸运的是,已经有代码可以为您处理telnet协议的特性。也许不是,那么您需要自己提供telnet协商和协议。这在许多RFC中都有记载。自己使用谷歌。
下一点是:您需要建立将EBCDIC字符集数据转换为ASCII的转换例程。因为Android是基于Linux的,所以您需要学习如何通过Flutter调用像iconv()
这样的libc例程,为字符集转换提供C接口,包括作为源/目标的EBCDIC风格。
最后一点:您需要学习如何解释5250数据流,并将终端模拟器指令转换为在屏幕上的适当位置动态放置Flutter UI元素。当然,你需要了解向IBMi发送什么,以使其理解你的请求。tn5250数据流也记录在公开可用的RFC中。
操作系统中曾经有一个名为Workstation Gateway的设施,但正如我所发现的,它在V5R2中已被删除。这可能提供了一种更简单的方法,因为5250数据流是动态转换为纯HTML的。
现在轮到你来决定你的目标是否值得你付出明显的努力。
我不知道你说的"直接";。你是说自己做套接字编程吗?你可以,但有更简单的连接方式。
最明显和直接的选择可能是ODBC、JDBC、HTTP和SSH。
ODBC和JDBC当然提供了一个基于SQL的接口,您可以使用它来发出命令(通过QCMDEXC过程或标量函数(或访问越来越全面的IBMi服务阵列。
如果您的需求仍然无法通过SQL获得,或者您根本不喜欢使用SQL,您可以使用XMLSERVICE库,它提供自己的编程接口";在";上述任何一种连接类型。尽管有从源代码构建的所有说明,但通常情况下,它应该已经安装在您的IBM i上。在几种编程语言(.NET、Node.js、PHP、Python、Ruby和Swift(中,XMLSERVICE有更高级别的包装器,但截至本文撰写之时,还没有Dart。我不熟悉Flutter,但我想您可以使用JavaScriptinterop包来处理Node.js包装。