查看源代码 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 以丢弃该条目。

例如,要获取仅包含非 loopback inet 接口的接口列表

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,则 family 可以设置为 [inet,inet6]

使用 flags 字段是必须为接口存在提供的任何标志。

例如,如果 family 设置为 inetflags 设置为 [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 的逆函数。它将主机和服务转换为相应的套接字地址。

HostService 之一可以为 undefined,但不能两者都为 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 的逆函数。它将套接字地址转换为相应的主机和服务。

此函数的链接

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().

获取网络接口名称和索引。