当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Addrinfo.getaddrinfo用法及代码示例


本文简要介绍ruby语言中 Addrinfo.getaddrinfo 的用法。

用法

getaddrinfo(nodename, service, family, socktype, protocol, flags) → [addrinfo, ...]
getaddrinfo(nodename, service, family, socktype, protocol) → [addrinfo, ...]
getaddrinfo(nodename, service, family, socktype) → [addrinfo, ...]
getaddrinfo(nodename, service, family) → [addrinfo, ...]
getaddrinfo(nodename, service) → [addrinfo, ...]

以数组形式返回 addrinfo 对象列表。

此方法将节点名(主机名)和服务(端口)转换为 addrinfo。由于转换不是唯一的,因此结果是 addrinfo 对象的列表。

如果不打算进行转换,nodename 或 service 可以为 nil。

family、socktype 和 protocol 是首选协议的提示。如果结果将用于带有SOCK_STREAM 的套接字,则应将SOCK_STREAM 指定为socktype。如果是这样, Addrinfo.getaddrinfo 返回适用于 SOCK_STREAM 的 addrinfo 列表。如果省略它们或给出 nil,则结果不受限制。

同样,PF_INET6 作为 IPv6 的系列限制。

flags 应该是 Socket::AI_ 的按位或?常量如下。请注意,常量的确切列表取决于操作系统。

AI_PASSIVE      Get address to use with bind()
AI_CANONNAME    Fill in the canonical name
AI_NUMERICHOST  Prevent host name resolution
AI_NUMERICSERV  Prevent service name resolution
AI_V4MAPPED     Accept IPv4-mapped IPv6 addresses
AI_ALL          Allow all addresses
AI_ADDRCONFIG   Accept only if any address is assigned

请注意,只要应用程序知道地址的使用情况,就应该指定 socktype。当省略 socktype 并将 servname 指定为整数时,某些平台会导致错误,因为某些端口号(例如 512)在没有 socktype 的情况下是不明确的。

Addrinfo.getaddrinfo("www.kame.net", 80, nil, :STREAM)
#=> [#<Addrinfo: 203.178.141.194:80 TCP (www.kame.net)>,
#    #<Addrinfo: [2001:200:dff:fff1:216:3eff:feb1:44d7]:80 TCP (www.kame.net)>]

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Addrinfo.getaddrinfo。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。