使用RPGLE检测IBM i(OS/400)上的TCP / IP端口是否打开
作者:佚名
上传时间:2023-05-28
运行软件:RPGLE
软件版本:IBM i 7.3
版权申诉
该示例代码展示了如何使用RPGLE编程语言检查IBM i(OS/400)上的特定TCP / IP端口是否打开。代码首先定义一个套接字控制块(Socket Control Block)来存储套接字描述符和套接字地址,并使用getprotobyname函数获取协议(如TCP或UDP)。然后,它在指定端口上使用SOCKET函数创建套接字,如果成功,则打印“端口已打开”,否则打印“无法打开端口”。
dcl-ds SocketCtlBlock qualified;
sd integer(10);
addr inaddr%ptr;
end-ds;
// 获取协议信息
dcl-proc GetProtoByName;
protocol char(10);
returns qualified inaddrinfo%ptr;
dcl-ds protoent qualified;
proto char(10);
aliases pointer(10);
proto_no integer(10);
end-ds;
execute sql get current client library special register into :protocol;
return %addr(getprotobyname(%trim(protocol)));
end-proc;
dcl-proc Main;
dcl-pi *n;
port integer(10);
end-pi;
dcl-ds sin qualified based(addr);
family integer(10);
port integer(10);
s_addr char(10);
sin_zero char(8);
end-ds;
dcl-ds hints qualified;
ai_flags integer(10);
ai_family integer(10);
ai_socktype integer(10);
ai_protocol integer(10);
ai_addrlen integer(10);
ai_canonname pointer(30);
ai_addr inaddr%ptr;
end-ds;
dcl-ds res qualified based(retVal);
ai_flags integer(10);
ai_family integer(10);
ai_socktype integer(10);
ai_protocol integer(10);
ai_addrlen integer(10);
ai_canonname pointer(30);
ai_addr inaddr%ptr;
end-ds;
dcl-ds servinfo qualified Options(*omit);
ai_flags integer(10);
ai_family integer(10);
ai_socktype integer(10);
ai_protocol integer(10);
ai_addrlen integer(10);
ai_canonname pointer(30);
ai_addr inaddr%ptr;
end-ds;
dcl-ds retVal pointer Inz(%null);
dcl-c FAMILY_INET AF_INET;
dcl-c sock_stream SOCK_STREAM;
// 创建套接字
SocketCtlBlock.sd = socket(FAMILY_INET,sock_stream,0);
if (SocketCtlBlock.sd >= 0);
memset(%addr(sin),*zeros,%size(sin));
sin.port = port;
sin.family = FAMILY_INET;
hints.ai_family = FAMILY_INET;
hints.ai_socktype = sock_stream;
hints.ai_protocol = IPPROTO_TCP;
// 获取并设置协议信息
hints.ai_protocol = getprotobyname('TCP').p_proto;
// 获取地址信息
if (getaddrinfo(%null,%addr(sin),%addr(hints),%addr(retVal)) >= 0);
// 检查端口是否打开
if (connect(SocketCtlBlock.sd,res.ai_addr,res.ai_addrlen) >= 0);
dsply('端口已打开');
else;
dsply('无法打开端口');
endif;
endif;
closesocket(SocketCtlBlock.sd);
endif;
end-proc;
免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com
用户评论
相关推荐
使用RPGLE检测IBM i(OS/400)上的TCP / IP端口是否打开
该示例代码展示了如何使用RPGLE编程语言检查IBM i(OS/400)上的特定TCP / IP端口是否打开。代码首先定义一个套接字控制块(Socket Control Block)来存储套接字描述符
IBM i 7.3
RPGLE
2023-05-28 20:34
如何在IBM i(OS/400)上使用RPGLE检查文件是否存在
本文介绍了如何使用RPGLE在IBM i(OS/400)上检查特定文件是否存在。所使用的方法是使用Run Time Library API来查询指定的文件并返回相关状态信息。本文提供了完整的RPGLE
IBM i v7.3
RPGLE
2023-04-27 13:40
IBM i (OS/400)上的RPGLE程序示例
本文提供了IBM i RPGLE示例代码,主要包括以下几个方面:RPGLE程序IBM i入门我们提供了一些简单的RPGLE程序示例,旨在帮助初学者了解RPGLE程序设计的基础。示例代码涵盖了RPG
IBM i V7R1
RPGLE
2023-04-01 14:22
如何使用RPGLE检查文件是否存在于IBM i (OS/400)上
演示如何在IBM i (OS/400)上使用RPGLE编程语言检查文件是否存在。该示例代码使用了IBM i (OS/400) API和文件系统函数进行文件检查。//声明一个包含文件名和路径的字符串变
IBM i 7.3
RPGLE
2023-03-16 17:34
在IBM i (OS/400)上使用RPGLE删除文件
本示例代码演示了如何使用RPGLE在IBM i (OS/400)上删除文件。我们将使用OS/400命令QShell,通过运行一个带有Shell语句的子进程来执行操作。/free dcl-
IBM i V7R1
RPGLE
2023-04-08 00:06
IBM i(OS/400)上使用RPGLE打印PDF文档
使用RPGLE在IBM i(OS/400)上打印PDF文档的方法。通过调用系统命令,将PDF文件转换为AFP格式,并使用AFP工具箱打印输出。 /free //指定Pdf文件名称
IBM i 7.3
RPGLE
2023-04-20 20:55
使用RPGLE在IBM i(OS/400)上创建PDF文件
本示例介绍如何使用RPGLE语言在IBM i操作系统上利用第三方库生成PDF文件。实现方式为使用RPGLE中可调用C语言的特性,调用第三方库生成PDF文件,并将其保存至本地文件系统。/*******
IBM i 7.3
RPGLE
2023-04-26 14:30
在IBM i (OS/400)上使用RPGLE读取CSV文件
本示例展示在IBM i (OS/400)上使用RPGLE语言读取并解析CSV文件的方法。本代码通过使用内置函数来将CSV文件解析为数组,并展示了如何对该数组进行处理。通过此方法可以方便地将CSV文件导
IBM i 7.2, RPGLE
IBM Rational Developer for i
2023-04-07 12:56
在IBM i (OS/400)上使用RPGLE编写程序
本文是关于如何在IBM i (OS/400)上使用RPGLE编写程序的指南。下面将介绍IBM i (OS/400) RPGLE编程、程序调试技巧、程序优化方法,并提供示例代码及代码释义。最后会对本文内
IBM i 7.3 TR3
IBM
2023-03-20 22:09
如何在IBM i (OS/400)上使用RPGLE编写CRUD操作
本示例展示了如何在IBM i上使用RPGLE编写简单的CRUD操作(创建、读取、更新、删除)。我们将演示如何使用SQL语句和DB2数据库进行数据操作,包括如何连接数据库、执行基本的SQL查询和更新操作
IBM i 7.3
RPGLE
2023-03-24 15:21