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 contains 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. - .parse(uri : String) : self
Parses a
Socket::IPAddressfrom an URI.
Class Method Summary
- .valid_port?(port : Int) : Bool
Returns
trueif port is a valid port number.
Instance Method Summary
- #==(other : self)
- #address : String
Returns a
Stringrepresentation of the IP address. - #hash(hasher)
- #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)
- #private? : Bool
Returns
trueif this IP is a private address. - #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
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, parse(uri : URI) : selfparse(uri : String) : self 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?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String 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) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String 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
def self.from(sockaddr : Pointer(LibC::Sockaddr), addrlen) : IPAddressSource
Creates an IPAddress from the internal OS representation. Supports both INET and INET6 families.
def self.parse(uri : URI) : IPAddressSource
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) def self.parse(uri : String) : selfSource
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
def self.valid_port?(port : Int) : BoolSource
Returns true if port is a valid port number.
Valid port numbers are in the range 0..65_535.
Instance Method Detail
def ==(other : self)
def address : StringSource
Returns a String representation of the IP address.
Example:
ip_address = socket.remote_address ip_address.address # => "127.0.0.1"
def hash(hasher)
def inspect(io : IO) : NilSource
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)"
def loopback? : BoolSource
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.
def pretty_print(pp)Source
def to_s(io : IO) : NilSource
Same as #inspect(io).
def unspecified? : BoolSource
Returns true if this IP is an unspecified address, either the IPv4 address 0.0.0.0 or the IPv6 address ::.
© 2012–2021 Manas Technology Solutions.
Licensed under the Apache License, Version 2.0.
https://crystal-lang.org/api/1.2.1/Socket/IPAddress.html