我正在使用 MATLAB 连接到托管在 AWS 中的数据库(使用数据库工具箱)。为此,我将数据库的 URL 作为本地端口提供,并创建到 AWS 主机的 SSH 隧道。
问题是需要创建此隧道才能运行代码。如果不是,则不会生成错误消息,但 MATLAB 会挂起并需要终止。我想将此代码部署给如果此隧道丢失将无法进行故障排除的用户。
我的问题是:有没有办法检查在 MATLAB 中打开的本地端口?如何检查隧道是否已设置?
我正在使用 MATLAB 连接到托管在 AWS 中的数据库(使用数据库工具箱)。为此,我将数据库的 URL 作为本地端口提供,并创建到 AWS 主机的 SSH 隧道。
问题是需要创建此隧道才能运行代码。如果不是,则不会生成错误消息,但 MATLAB 会挂起并需要终止。我想将此代码部署给如果此隧道丢失将无法进行故障排除的用户。
我的问题是:有没有办法检查在 MATLAB 中打开的本地端口?如何检查隧道是否已设置?
由于您使用的是数据库工具箱,因此您可能需要使用logintimeout函数。正如文档所说:
注意 如果您没有为 logintimeout 指定值并且 MATLAB 会话无法建立数据库连接,您的 MATLAB 会话可能会冻结。
你会将你的代码包装在一个 try/catch 块中
我不熟悉 Matlab 的 TCP 对象,但是有一个system
执行程序的命令,返回它的退出代码(参见它的文档)。所以可能做这项工作的是一个小程序或脚本(根据需要可移植),它试图连接到本地端口。
或者,小程序/脚本实际上可以打开(或重新打开)隧道并返回0
成功。(这可能会增加 Matlab 如何处理分叉进程的问题,我不知道它是如何处理的。)
可能有一些方法可以通过Matlab检查是否打开并重新打开 -内务管理,但我不知道。