Address
Address
#include <icy/net/address.h>Represents an IPv4 or IPv6 socket address with host and port.
Public Methods
| Return | Name | Description |
|---|---|---|
Address | Creates a wildcard (all zero) IPv4 Address. | |
Address | Creates an Address from an IP address and a port number. | |
Address | Creates an Address by copying another one. | |
Address | Creates an Address from a native socket address. | |
Address | Creates an Address from an IP address and a service name or port number. | |
Address explicit | Creates an Address from an IP address or host name and a port number/service name. Host name/address and port number must be separated by a colon. In case of an IPv6 address, the address part must be enclosed in brackets. | |
~Address | Destroys the Address. | |
Address & | operator= | Assigns another Address. |
void | swap | Swaps the Address with another one. |
std::string | host const | Returns the host IP address. |
uint16_t | port const | Returns the port number. |
socklen_t | length const | Returns the length of the internal native socket address. |
const struct sockaddr * | addr const | Returns a pointer to the internal native socket address. |
int | af const | Returns the address family (AF_INET or AF_INET6) of the address. |
std::string | toString const | Returns a string representation of the address. |
Address::Family | family const | Returns the address family of the host's address. |
bool | valid const | Returns true when the port is set and the address is valid ie. not wildcard. |
bool | operator< const | Compares two addresses for ordering (by family then port). |
bool | operator== const | Returns true if the host and port of both addresses are equal. |
bool | operator!= const | Returns true if the host or port of the addresses differ. |
Address
Address()Creates a wildcard (all zero) IPv4 Address.
Address
Address(const std::string & host, uint16_t port)Creates an Address from an IP address and a port number.
The IP address must either be a domain name, or it must be in dotted decimal (IPv4) or hex string (IPv6) format.
Address
Address(const Address & addr)Creates an Address by copying another one.
Address
Address(const struct sockaddr * addr, socklen_t length)Creates an Address from a native socket address.
Address
Address(const std::string & host, const std::string & port)Creates an Address from an IP address and a service name or port number.
The IP address must either be a domain name, or it must be in dotted decimal (IPv4) or hex string (IPv6) format.
The given port must either be a decimal port number, or a service name.
Address
explicit
explicit Address(const std::string & hostAndPort)Creates an Address from an IP address or host name and a port number/service name. Host name/address and port number must be separated by a colon. In case of an IPv6 address, the address part must be enclosed in brackets.
Examples: 192.168.1.10:80
~Address
~Address() noexceptDestroys the Address.
operator=
Address & operator=(const Address & addr)Assigns another Address.
swap
void swap(Address & addr)Swaps the Address with another one.
host
const
std::string host() constReturns the host IP address.
port
const
uint16_t port() constReturns the port number.
length
const
socklen_t length() constReturns the length of the internal native socket address.
addr
const
const struct sockaddr * addr() constReturns a pointer to the internal native socket address.
af
const
int af() constReturns the address family (AF_INET or AF_INET6) of the address.
toString
const
std::string toString() constReturns a string representation of the address.
family
const
Address::Family family() constReturns the address family of the host's address.
valid
const
bool valid() constReturns true when the port is set and the address is valid ie. not wildcard.
operator<
const
bool operator<(const Address & addr) constCompares two addresses for ordering (by family then port).
Parameters
addrThe address to compare against.
Returns
true if this address is less than addr.
operator==
const
bool operator==(const Address & addr) constReturns true if the host and port of both addresses are equal.
Parameters
addrThe address to compare against.
operator!=
const
bool operator!=(const Address & addr) constReturns true if the host or port of the addresses differ.
Parameters
addrThe address to compare against.
Public Static Methods
| Return | Name | Description |
|---|---|---|
uint16_t | resolveService static | Resolves a service name or decimal port string to a port number. |
bool | validateIP static | Returns true if the given string is a valid IPv4 or IPv6 address. |
resolveService
static
static uint16_t resolveService(const std::string & service)Resolves a service name or decimal port string to a port number.
Parameters
serviceService name (e.g. "http") or decimal port string (e.g. "80").
Returns
The resolved port number in host byte order.
validateIP
static
static bool validateIP(std::string_view address)Returns true if the given string is a valid IPv4 or IPv6 address.
Parameters
addressThe string to validate.
Returns
true if the address parses as a valid IP address, false otherwise.
Protected Methods
| Return | Name | Description |
|---|---|---|
void | init |
init
void init(const std::string & host, uint16_t port)Public Types
| Name | Description |
|---|---|
Family | Possible address families for IP addresses. |
Family
enum FamilyPossible address families for IP addresses.
| Value | Description |
|---|---|
IPv4 | |
IPv6 |
Private Attributes
| Return | Name | Description |
|---|---|---|
std::shared_ptr< AddressBase > | _base |
_base
std::shared_ptr< AddressBase > _base