Socket::Addrinfo

struct Socket::Addrinfo

Overview

Domain name resolver.

Defined in:

socket/addrinfo.cr

Class Method Summary

Instance Method Summary

Class Method Detail

def self.new(addrinfo : Pointer(LibC::Addrinfo))Source

def self.resolve(domain, service, family : Family? = nil, type : Type = nil, protocol : Protocol = Protocol::IP, timeout = nil) : Array(Addrinfo)Source

Resolves a domain that best matches the given options.

  • domain may be an IP address or a domain name.
  • service may be a port number or a service name. It must be specified, because different servers may handle the mail or http services for example.
  • family is optional and defaults to Family::UNSPEC
  • type is the intented socket type (e.g. Type::STREAM) and must be specified.
  • protocol is the intented socket protocol (e.g. Protocol::TCP) and should be specified.

Example:

addrinfos = Socket::Addrinfo.resolve("example.org", "http", type: Socket::Type::STREAM, protocol: Socket::Protocol::TCP)

def self.resolve(domain, service, family : Family? = nil, type : Type = nil, protocol : Protocol = Protocol::IP, timeout = nil, &block)Source

Resolves a domain that best matches the given options.

Yields each possible Addrinfo resolution since a domain may resolve to many IP- Implementations are supposed to try all the addresses until the socket is connected (or bound) or there are no addresses to try anymore-

Raising is an expensive operation, so instead of raising on a connect or bind error, just to rescue it immediately after, the block is expected to return the error instead, which will be raised once there are no more addresses to try-

The iteration will be stopped once the block returns something that isn't an Exception (e.g. a Socket or nil).

def self.tcp(domain, service, family = Family::UNSPEC, timeout = nil) : Array(Addrinfo)Source

Resolves domain for the UDP protocol and returns an Array of possible Addrinfo- See #resolve for details.

Example:

addrinfos = Socket::Addrinfo.tcp("example.org", 80)

def self.tcp(domain, service, family = Family::UNSPEC, timeout = nil, &block)Source

Resolves a domain for the TCP protocol with STREAM type, and yields each possible Addrinfo- See #resolve for details.

def self.udp(domain, service, family = Family::UNSPEC, timeout = nil) : Array(Addrinfo)Source

Resolves domain for the UDP protocol and returns an Array of possible Addrinfo- See #resolve for details.

Example:

addrinfos = Socket::Addrinfo.tcp("example.org", 53)

def self.udp(domain, service, family = Family::UNSPEC, timeout = nil, &block)Source

Resolves a domain for the UDP protocol with DGRAM type, and yields each possible Addrinfo- See #resolve for details.

Instance Method Detail

def family : FamilySource

def ip_addressSource

Returns an IPAddress matching this addrinfo.

def protocol : ProtocolSource

def size : Int32Source

def to_unsafeSource

def type : TypeSource

© 2012–2017 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/0.22.0/Socket/Addrinfo.html

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部