struct Socket::IPAddress
Overview
IP address representation.
Holds a binary representation of an IP address, either translated from a
String, or directly received from an opened connection (e.g.
Socket#local_address, Socket#receive).
Example:
require "socket"
Socket::IPAddress.new("127.0.0.1", 8080)
Socket::IPAddress.new("fe80::2ab2:bdff:fe59:8e2c", 1234)
IPAddress won't resolve domains, including localhost. If you must
resolve an IP, or don't know whether a String constains an IP or a domain
name, you should use Addrinfo.resolve instead.
Defined in:
socket/address.crConstant Summary
-
BROADCAST =
"255.255.255.255" -
BROADCAST6 =
"ff0X::1" -
LOOPBACK =
"127.0.0.1" -
LOOPBACK6 =
"::1" -
UNSPECIFIED =
"0.0.0.0" -
UNSPECIFIED6 =
"::"
Constructors
-
.from(sockaddr : Pointer(LibC::Sockaddr), addrlen) : IPAddress
Creates an
IPAddressfrom the internal OS representation. - .new(address : String, port : Int32)
-
.parse(uri : URI) : IPAddress
Parses a
Socket::IPAddressfrom an URI.
Class Method Summary
-
.parse(uri : String)
Parses a
Socket::IPAddressfrom an URI.
Instance Method Summary
- #==(other : IPAddress)
-
#address
Returns a
Stringrepresentation of the IP address. -
#inspect(io : IO) : Nil
Appends this struct's name and instance variables names and values to the given IO.
-
#loopback? : Bool
Returns
trueif this IP is a loopback address. - #port : Int32
- #pretty_print(pp)
-
#to_s(io : IO) : Nil
Same as
#inspect(io). - #to_unsafe : Pointer(LibC::Sockaddr)
-
#unspecified? : Bool
Returns
trueif this IP is an unspecified address, either the IPv4 address0.0.0.0or the IPv6 address::.
Instance methods inherited from struct Socket::Address
==(other)
==,
family : Family
family,
size : Int32
size,
to_unsafe : Pointer(LibC::Sockaddr)
to_unsafe
Constructor methods inherited from struct Socket::Address
from(sockaddr : Pointer(LibC::Sockaddr), addrlen) : Address
from,
new(family : Family, size : Int32)
new
Class methods inherited from struct Socket::Address
parse(uri : URI)parse(uri : String) parse
Instance methods inherited from struct Struct
==(other) : Bool
==,
hash(hasher)
hash,
inspect(io : IO) : Nil
inspect,
pretty_print(pp) : Nil
pretty_print,
to_s(io : IO) : Nil
to_s
Instance methods inherited from struct Value
==(other : JSON::Any)==(other : YAML::Any)
==(other) ==, dup dup
Instance methods inherited from class Object
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(*values : Object) : Bool
in?(collection) : Bool in?, inspect : String
inspect(io : IO) : Nil inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO)
to_json to_json, to_pretty_json(io : IO, indent : String = " ")
to_pretty_json(indent : String = " ") to_pretty_json, to_s : String
to_s(io : IO) : Nil to_s, to_yaml(io : IO)
to_yaml to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) from_yaml
Constructor Detail
Creates an IPAddress from the internal OS representation. Supports both
INET and INET6 families.
Parses a Socket::IPAddress from an URI.
It expects the URI to include where scheme as
well as any additional URI components (such as path or query) are ignored.
host must be an IP address (v4 or v6), otherwise Socket::Error will be
raised. Domain names will not be resolved.
require "socket"
Socket::IPAddress.parse("tcp://127.0.0.1:8080") # => Socket::IPAddress.new("127.0.0.1", 8080)
Socket::IPAddress.parse("udp://[::1]:8080") # => Socket::IPAddress.new("::1", 8080)
Class Method Detail
Parses a Socket::IPAddress from an URI.
It expects the URI to include where scheme as
well as any additional URI components (such as path or query) are ignored.
host must be an IP address (v4 or v6), otherwise Socket::Error will be
raised. Domain names will not be resolved.
require "socket"
Socket::IPAddress.parse("tcp://127.0.0.1:8080") # => Socket::IPAddress.new("127.0.0.1", 8080)
Socket::IPAddress.parse("udp://[::1]:8080") # => Socket::IPAddress.new("::1", 8080)
Instance Method Detail
Returns a String representation of the IP address.
Example:
ip_address = socket.remote_address
ip_address.address # => "127.0.0.1"
Appends this struct's name and instance variables names and values to the given IO.
struct Point
def initialize(@x : Int32, @y : Int32)
end
end
p1 = Point.new 1, 2
p1.to_s # "Point(@x=1, @y=2)"
p1.inspect # "Point(@x=1, @y=2)"
Returns true if this IP is a loopback address.
In the IPv4 family, loopback addresses are all addresses in the subnet
127.0.0.0/24. In IPv6 ::1 is the loopback address.
Returns true if this IP is an unspecified address, either the IPv4 address 0.0.0.0 or the IPv6 address ::.