檢視原始碼 net (核心 v10.2)

網路介面。

此模組提供網路介面的 API。

概要

函式

網路位址和服務轉換。

回傳目前主機的名稱。

取得介面位址。

取得命名空間中的介面位址。

以協定獨立的方式進行位址到名稱的轉換。

依名稱取得服務。

依名稱取得服務。

網路介面索引和名稱之間的映射。

網路介面名稱和索引之間的映射。

取得網路介面名稱和索引。

類型

此類型的連結

address_info()

檢視原始碼 (自 OTP 22.0 起)
-type address_info() ::
          #{family := socket:domain(),
            socktype := any | socket:type() | integer(),
            protocol := socket:protocol(),
            address := socket:sockaddr()}.
此類型的連結

ifaddrs()

檢視原始碼 (自 OTP 22.0 起)
-type ifaddrs() ::
          #{name := string(),
            flags := ifaddrs_flags(),
            addr => socket:sockaddr(),
            netmask => socket:sockaddr(),
            broadaddr => socket:sockaddr(),
            dstaddr => socket:sockaddr()}.

介面位址和旗標。

此類型定義介面的位址和旗標。

注意

此映射的所有欄位不一定要存在。旗標欄位可用於測試某些欄位。例如,只有當旗標中存在 broadcast 旗標時,才會出現 broadaddr

此類型的連結

ifaddrs_filter()

檢視原始碼 (未匯出) (自 OTP 22.0 起)
-type ifaddrs_filter() ::
          all | default | inet | inet6 | packet | link | hwaddr |
          ifaddrs_filter_map() |
          ifaddrs_filter_fun().

介面位址篩選選擇器。

  • all - 所有介面

  • default - 位址族為 inet *或* inet6 的介面

  • inet | inet6 | packet | link - *僅*具有指定位址族的介面

  • hwaddr - 位址族為 packet *或* link 的介面

此類型的連結

ifaddrs_filter_fun()

檢視原始碼 (未匯出) (自 OTP 22.0 起)
-type ifaddrs_filter_fun() :: fun((ifaddrs()) -> boolean()).

介面位址篩選選擇器 function/0

對於每個 ifaddrs 項目,回傳 true 以保留項目,或回傳 false 以捨棄項目。

例如,若要取得僅包含非 loopbackinet 介面清單

net:getifaddrs(
    fun (#{ addr  := #{family := inet},
            flags := Flags}) ->
          not lists:member(loopback, Flags);
        (_) ->
          false
    end).
此類型的連結

ifaddrs_filter_map()

檢視原始碼 (未匯出) (自 OTP 22.0 起)
-type ifaddrs_filter_map() ::
          #{family :=
                all | default | local | inet | inet6 | packet | link |
                [local | inet | inet6 | packet | link],
            flags := any | [ifaddrs_flag()]}.

介面位址篩選選擇器映射。

family 欄位只能具有(上述)指定的值(而不是 socket:domain() 的所有值)。它也可以是值的清單,以涵蓋接受任何指定族的情況。例如,如果接受 inetinet6,則可以將族設定為 [inet,inet6]

flags 欄位的使用方式是,介面必須存在任何提供的旗標。

例如,如果 family 設定為 inet,且 flags 設定為 [broadcast, multicast],則只會列出位址族為 inet,且旗標為 broadcastmulticast 的介面。

此類型的連結

ifaddrs_flag()

檢視原始碼 (自 OTP 22.0 起)
-type ifaddrs_flag() ::
          up | broadcast | debug | loopback | pointopoint | notrailers | running | noarp | promisc |
          master | slave | multicast | portsel | automedia | dynamic.
此類型的連結

ifaddrs_flags()

檢視原始碼 (自 OTP 22.0 起)
-type ifaddrs_flags() :: [ifaddrs_flag()].
此類型的連結

name_info()

檢視原始碼 (自 OTP 22.0 起)
-type name_info() :: #{host := string(), service := string()}.
此類型的連結

name_info_flag()

檢視原始碼 (自 OTP 22.0 起)
-type name_info_flag() :: namereqd | dgram | nofqdn | numerichost | numericserv.
此類型的連結

name_info_flag_ext()

檢視原始碼 (自 OTP 22.0 起)
-type name_info_flag_ext() :: idn.
此類型的連結

name_info_flags()

檢視原始碼 (自 OTP 22.0 起)
-type name_info_flags() :: [name_info_flag() | name_info_flag_ext()].
此類型的連結

network_interface_index()

檢視原始碼 (自 OTP 22.0 起)
-type network_interface_index() :: non_neg_integer().
此類型的連結

network_interface_name()

檢視原始碼 (自 OTP 22.0 起)
-type network_interface_name() :: string().

函式

此函式的連結

getaddrinfo(Host)

檢視原始碼 (自 OTP 22.0 起)
-spec getaddrinfo(Host) -> {ok, Info} | {error, Reason}
                     when Host :: string(), Info :: [address_info()], Reason :: term().

等同於 getaddrinfo(Host, undefined)

此函式的連結

getaddrinfo(Host, Service)

檢視原始碼 (自 OTP 22.0 起)
-spec getaddrinfo(Host, undefined) -> {ok, Info} | {error, Reason}
                     when Host :: string(), Info :: [address_info()], Reason :: term();
                 (undefined, Service) -> {ok, Info} | {error, Reason}
                     when Service :: string(), Info :: [address_info()], Reason :: term();
                 (Host, Service) -> {ok, Info} | {error, Reason}
                     when
                         Host :: string(),
                         Service :: string(),
                         Info :: [address_info()],
                         Reason :: term().

網路位址和服務轉換。

此函式是 getnameinfo 的反向函式。它會將主機和服務轉換為對應的 socket 位址。

HostService 之一可以是 undefined,但*不能*兩者皆是。

此函式的連結

gethostname()

檢視原始碼 (自 OTP 22.0 起)
-spec gethostname() -> {ok, HostName} | {error, Reason} when HostName :: string(), Reason :: term().

回傳目前主機的名稱。

此函式的連結

getifaddrs()

檢視原始碼 (自 OTP 22.3 起)
-spec getifaddrs() -> {ok, IfAddrs} | {error, Reason} when IfAddrs :: [ifaddrs()], Reason :: term().

等同於 getifaddrs(default)

此函式的連結

getifaddrs/1

檢視原始碼 (自 OTP 22.3 起)
-spec getifaddrs(Filter) -> {ok, IfAddrs} | {error, Reason}
                    when Filter :: ifaddrs_filter(), IfAddrs :: [ifaddrs()], Reason :: term();
                (Namespace) -> {ok, IfAddrs} | {error, Reason}
                    when Namespace :: file:filename_all(), IfAddrs :: [ifaddrs()], Reason :: term().

取得介面位址。

使用引數 'Filter':取得電腦的介面位址,根據 Filter 篩選。

使用引數 Namespace:等同於 getifaddrs(default, Namespace)

此函式的連結

getifaddrs(Filter, Namespace)

檢視原始碼 (自 OTP 22.3 起)
-spec getifaddrs(Filter, Namespace) -> {ok, IfAddrs} | {error, Reason}
                    when
                        Filter :: ifaddrs_filter(),
                        Namespace :: file:filename_all(),
                        IfAddrs :: [ifaddrs()],
                        Reason :: term().

取得命名空間中的介面位址。

getifaddrs(Filter) 相同,但在指定的 Namespace 中。

此函式的連結

getnameinfo(SockAddr)

檢視原始碼 (自 OTP 22.0 起)
-spec getnameinfo(SockAddr) -> {ok, Info} | {error, Reason}
                     when SockAddr :: socket:sockaddr(), Info :: name_info(), Reason :: term().

等同於 getnameinfo(SockAddr, undefined)

此函式的連結

getnameinfo(SockAddr, Flags)

檢視原始碼 (自 OTP 22.0 起)
-spec getnameinfo(SockAddr, Flags) -> {ok, Info} | {error, Reason}
                     when
                         SockAddr :: socket:sockaddr(),
                         Flags :: name_info_flags() | undefined,
                         Info :: name_info(),
                         Reason :: term().

以協定獨立的方式進行位址到名稱的轉換。

此函式是 getaddrinfo 的反向函式。它會將 socket 位址轉換為對應的主機和服務。

此函式的連結

getservbyname(Name)

檢視原始碼 (自 OTP 27.1 起)
-spec getservbyname(Name) -> {ok, PortNumber} | {error, Reason}
                       when
                           Name :: atom() | string(),
                           PortNumber :: socket:port_number(),
                           Reason :: term().

等同於 getservbyname(Name, any)

此函式的連結

getservbyname(Name, Protocol)

檢視原始碼 (自 OTP 27.1 起)
-spec getservbyname(Name, Protocol) -> {ok, PortNumber} | {error, Reason}
                       when
                           Name :: atom() | string(),
                           PortNumber :: socket:port_number(),
                           Protocol :: any | socket:protocol(),
                           Reason :: term().

依名稱取得服務。

此函式用於取得指定服務的協定連接埠號碼。

此函式的連結

getservbyport(PortNumber)

檢視原始碼 (自 OTP 27.1 起)
-spec getservbyport(PortNumber) -> {ok, Name} | {error, Reason}
                       when
                           PortNumber :: socket:port_number(),
                           Name :: atom() | string(),
                           Reason :: term().

等同於 getservbyport(PortNumber, any)

此函式的連結

getservbyport(PortNumber, Protocol)

檢視原始碼 (自 OTP 27.1 起)
-spec getservbyport(PortNumber, Protocol) -> {ok, Name} | {error, Reason}
                       when
                           PortNumber :: socket:port_number(),
                           Protocol :: any | socket:protocol(),
                           Name :: atom() | string(),
                           Reason :: term().

依名稱取得服務。

此函式用於取得指定連接埠號碼的協定服務名稱。

此函式的連結

if_index2name(Idx)

檢視原始碼 (自 OTP 22.0 起)
-spec if_index2name(Idx) -> {ok, Name} | {error, Reason}
                       when
                           Idx :: network_interface_index(),
                           Name :: network_interface_name(),
                           Reason :: term().

網路介面索引和名稱之間的映射。

此函式的連結

if_name2index(Name)

檢視原始碼 (自 OTP 22.0 起)
-spec if_name2index(Name) -> {ok, Idx} | {error, Reason}
                       when
                           Name :: network_interface_name(),
                           Idx :: network_interface_index(),
                           Reason :: term().

網路介面名稱和索引之間的映射。

此函式的連結

if_names()

檢視原始碼 (自 OTP 22.0 起)
-spec if_names() -> {ok, Names} | {error, Reason}
                  when
                      Names :: [{Idx, If}],
                      Idx :: network_interface_index(),
                      If :: network_interface_name(),
                      Reason :: term().

取得網路介面名稱和索引。