檢視原始碼 erl_epmd (kernel v10.2)

Erlang 與 epmd 的介面

此模組與 EPMD 常駐程式溝通,請參考 epmd。若要實作您自己的 epmd 模組,請參考 ERTS 使用者指南:如何為 Erlang 分散式系統實作替代節點發現機制

摘要

函式

由分散式模組呼叫,以將遠端節點的 Host 解析為 IP 位址。

由分散式模組呼叫,以取得本機節點在接受新的分散式請求時應監聽的埠號。

net_adm:names/0 呼叫。Host 預設為本機主機。傳回在指定主機上由 epmd 註冊的 Erlang 節點的名稱和相關聯的埠號。如果 epmd 無法運作,則傳回 {error, address}

請求 EPMD 實例中給定節點的分散式埠號。連同埠號,它會傳回自 Erlang/OTP R6 以來的分散式協定版本,該版本為 5。

epmd 註冊節點,並告知 epmd 目前節點將使用的埠號。它會傳回一個建立編號。每次註冊時,此編號都會遞增,以協助區分以相同名稱連線至 epmd 的新節點實例。

當此模組新增為 erl_distribution Supervisor 的子項目時,會呼叫此函式。

函式

連結到此函式

address_please(Name, Host, AddressFamily)

檢視原始碼 (自 OTP 21.0 起)
-spec address_please(Name, Host, AddressFamily) -> Success | {error, term()}
                        when
                            Name :: string(),
                            Host :: string() | inet:ip_address(),
                            AddressFamily :: inet | inet6,
                            Port :: non_neg_integer(),
                            Version :: non_neg_integer(),
                            Success :: {ok, inet:ip_address()} | {ok, inet:ip_address(), Port, Version}.

由分散式模組呼叫,以將遠端節點的 Host 解析為 IP 位址。

作為最佳化,此函式也可能會傳回遠端節點的埠號和版本。如果傳回埠號和版本,則不會呼叫 port_please/3

連結到此函式

listen_port_please(Name, Host)

檢視原始碼 (自 OTP 23.0 起)
-spec listen_port_please(Name, Host) -> {ok, Port}
                            when
                                Name :: atom() | string(),
                                Host :: atom() | string() | inet:ip_address(),
                                Port :: non_neg_integer().

由分散式模組呼叫,以取得本機節點在接受新的分散式請求時應監聽的埠號。

連結到此函式

names(Host)

檢視原始碼 (自 OTP 21.0 起)
-spec names(Host) -> {ok, [{Name, Port}]} | {error, Reason}
               when
                   Host :: atom() | string() | inet:ip_address(),
                   Name :: string(),
                   Port :: non_neg_integer(),
                   Reason :: address | file:posix().

net_adm:names/0 呼叫。Host 預設為本機主機。傳回在指定主機上由 epmd 註冊的 Erlang 節點的名稱和相關聯的埠號。如果 epmd 無法運作,則傳回 {error, address}

範例

(arne@dunn)1> erl_epmd:names(localhost).
{ok,[{"arne",40262}]}
連結到此函式

port_please(Name, Host)

檢視原始碼 (自 OTP 21.0 起)
-spec port_please(Name, Host) -> {port, Port, Version} | noport | closed | {error, term()}
                     when
                         Name :: atom() | string(),
                         Host :: atom() | string() | inet:ip_address(),
                         Port :: non_neg_integer(),
                         Version :: non_neg_integer().

等同於 port_please(Name, Host, infinity)

連結到此函式

port_please(Name, Host, Timeout)

檢視原始碼 (自 OTP 21.0 起)
-spec port_please(Name, Host, Timeout) -> {port, Port, Version} | noport | closed | {error, term()}
                     when
                         Name :: atom() | string(),
                         Host :: atom() | string() | inet:ip_address(),
                         Timeout :: non_neg_integer() | infinity,
                         Port :: non_neg_integer(),
                         Version :: non_neg_integer().

請求 EPMD 實例中給定節點的分散式埠號。連同埠號,它會傳回自 Erlang/OTP R6 以來的分散式協定版本,該版本為 5。

連結到此函式

register_node(Name, Port)

檢視原始碼 (自 OTP 21.0 起)
-spec register_node(Name, Port) -> Result
                       when
                           Name :: string(),
                           Port :: non_neg_integer(),
                           Creation :: non_neg_integer(),
                           Result :: {ok, Creation} | {error, already_registered} | term().

等同於 register_node(Name, Port, inet)

連結到此函式

register_node(Name, Port, Driver)

檢視原始碼 (自 OTP 21.0 起)
-spec register_node(Name, Port, Driver) -> Result
                       when
                           Name :: string(),
                           Port :: non_neg_integer(),
                           Driver :: inet_tcp | inet6_tcp | inet | inet6,
                           Creation :: non_neg_integer() | -1,
                           Result :: {ok, Creation} | {error, already_registered} | term().

epmd 註冊節點,並告知 epmd 目前節點將使用的埠號。它會傳回一個建立編號。每次註冊時,此編號都會遞增,以協助區分以相同名稱連線至 epmd 的新節點實例。

在節點成功向 epmd 註冊後,如果連線中斷,它會自動嘗試重新連線至常駐程式。

連結到此函式

start_link()

檢視原始碼 (自 OTP 21.0 起)
-spec start_link() -> {ok, pid()} | ignore | {error, term()}.

當此模組新增為 erl_distribution Supervisor 的子項目時,會呼叫此函式。