如何连接到已注册的节点(Erlang)并从另一个 erlang 应用程序中使用它

Posted

技术标签:

【中文标题】如何连接到已注册的节点(Erlang)并从另一个 erlang 应用程序中使用它【英文标题】:How to connect to a registered Node (Erlang) and use it from another erlang application 【发布时间】:2013-08-13 09:57:14 【问题描述】:

我启动了一个节点

erl -name n1@198.XXX.X.XX -setcookie somecookie

(n1@198.XXX.X.XX)>

但是我有另一个 erlang 应用程序,其中我有一个模块,我想在其中使用我刚刚注册的节点 (n1@198.XXX.X.XX)。 我试图直接从代码 net_adm:ping(n1@198.XXX.X.XX) 做。我感到一阵阵痛。我可以看到 net_adm:names()。在元组中返回所有已注册和存活的节点。ok [node, 999],[n1,9993],[theappnode, 8383]

我需要一种连接到 n1 的方法,然后使用 to 用 rpc ping 另一个远程节点,类似于

conn = 连接到节点 (n1) 然后做rpc ... 这些都来自另一个erlang应用程序的模块代码...... 以上可以吗?

【问题讨论】:

【参考方案1】:

可能您的其他节点不是使用相同的 cookie 启动的。您有两种解决方案:

    用相同的cookie启动另一个节点

    erl -name otherapp -setcookie some cookie
    1> net_adm:ping('n1@198.X.X.X').
    pong
    

    启动另一个节点,告诉它n1节点的cookie是什么。

    erl -name otherapp
    1> net_adm:ping('n1@198.X.X.X').
    pang
    2> erlang:set_cookie('n1@198.X.X.X', 'somecookie').
    true
    3> net_adm:ping('n1@198.X.X.X').
    pong
    

您不能在分布式集群中混合使用短名称和长名称(-sname 和 -name)。

【讨论】:

我不认为你理解我,或者我没有指定更多的东西。我将编辑问题 ***.com/questions/18187288/…

以上是关于如何连接到已注册的节点(Erlang)并从另一个 erlang 应用程序中使用它的主要内容,如果未能解决你的问题,请参考以下文章

无法从另一台机器连接到 Geth 节点 RPC

如何将 Cowboy (Erlang) websocket 连接到 webflow.io 生成的网页

我可以在 C 节点中获得 Erlang OTP 行为吗?

Erlang EPMD 使用非默认 EPMD 端口连接到其他主机

我如何传递从另一个模型获取的角色数组以在 laravel 中注册表单

如何跟踪erlang中的子进程?