sockets - Openedge 使用 Windows 服务名称连接到端口
问题描述
我正在尝试编写一个程序来测试 Linux 端口以查看它是否正在侦听。该程序在 Windows 机器上运行,端口号可能是可变的,具体取决于所选的服务。我需要使用 Windows 服务文件查找端口号。以下是我的程序:
define input parameter ip-network-id as char no-undo.
DEFINE VARIABLE hSocket AS HANDLE NO-UNDO.
DEFINE VARIABLE cService AS CHARACTER NO-UNDO.
DEFINE VARIABLE cHostName AS CHARACTER NO-UNDO.
DEFINE VARIABLE lResult AS LOGICAL NO-UNDO.
CREATE SOCKET hSocket.
GET-KEY-VALUE SECTION "DATABASE" KEY "dbhostname" VALUE cHostName.
ASSIGN
cService = "txipd" + ip-network-id /*ip-network-id = "fis" */
lResult = hSocket:CONNECT("-H " + cHostName + " -S " + cService) NO-ERROR.
IF lResult THEN do:
MESSAGE cHostName "is accepting Cilent/Server connections on" cService " ."
VIEW-AS ALERT-BOX INFO BUTTONS OK.
/* Once done with the database disconnect and delete the object */
hSocket:DISCONNECT() NO-ERROR.
DELETE OBJECT hSocket NO-ERROR.
end.
Else
MESSAGE "The Database is not listening on this port" cService lResult cHostName
VIEW-AS ALERT-BOX INFO BUTTONS OK.
我的 Windows 服务文件包含以下条目:
txipdfis 31357/tcp
ip-network-id 可以等于从浏览中选择的许多选项之一,服务 txipdfis 可能位于不同的端口号上,具体取决于特定安装的设置方式,因此我需要在 Windows 服务文件中查找“txipdfis”以确定正确的端口号。这可能吗?
解决方案
Windows 服务文件的最后一行没有空行。在最后使用 CRLF 更新服务文件后,我就可以连接了。
推荐阅读
- java - 如何将数据添加到在构造函数中初始化的数组?
- ios - search tuples object in UIsearchbar?
- mysql - 如何在 sql 查询中获取价格差异百分比
- python - 如何创建 datetime.time 类的子类
- laravel - 如何修复未定义函数:7 错误:运算符不存在:整数 = 文本
- javascript - 如何将 Python+Flask 对象列表转换为 JS 对象列表?
- python - Python:尝试检查文件是否存在,如果不存在,则创建新文件和最终输出列表
- reactjs - 盖茨比:更改默认路径名称
- javascript - (let { items } = user) 是否与说 (user.items) 完全相同?
- c - 返回指向 const int 的 const 指针