Net module

Address

Represents an IPv4 or IPv6 socket address with host and port.

Address

#include <icy/net/address.h>

Represents an IPv4 or IPv6 socket address with host and port.

Public Methods

ReturnNameDescription
AddressCreates a wildcard (all zero) IPv4 Address.
AddressCreates an Address from an IP address and a port number.
AddressCreates an Address by copying another one.
AddressCreates an Address from a native socket address.
AddressCreates an Address from an IP address and a service name or port number.
Address explicitCreates 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.
~AddressDestroys the Address.
Address &operator=Assigns another Address.
voidswapSwaps the Address with another one.
std::stringhost constReturns the host IP address.
uint16_tport constReturns the port number.
socklen_tlength constReturns the length of the internal native socket address.
const struct sockaddr *addr constReturns a pointer to the internal native socket address.
intaf constReturns the address family (AF_INET or AF_INET6) of the address.
std::stringtoString constReturns a string representation of the address.
Address::Familyfamily constReturns the address family of the host's address.
boolvalid constReturns true when the port is set and the address is valid ie. not wildcard.
booloperator< constCompares two addresses for ordering (by family then port).
booloperator== constReturns true if the host and port of both addresses are equal.
booloperator!= constReturns 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

www.0state.com:8080


~Address

~Address() noexcept

Destroys 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() const

Returns the host IP address.


port

const

uint16_t port() const

Returns the port number.


length

const

socklen_t length() const

Returns the length of the internal native socket address.


addr

const

const struct sockaddr * addr() const

Returns a pointer to the internal native socket address.


af

const

int af() const

Returns the address family (AF_INET or AF_INET6) of the address.


toString

const

std::string toString() const

Returns a string representation of the address.


family

const

Address::Family family() const

Returns the address family of the host's address.


valid

const

bool valid() const

Returns true when the port is set and the address is valid ie. not wildcard.


operator<

const

bool operator<(const Address & addr) const

Compares two addresses for ordering (by family then port).

Parameters

  • addr The address to compare against.

Returns

true if this address is less than addr.


operator==

const

bool operator==(const Address & addr) const

Returns true if the host and port of both addresses are equal.

Parameters

  • addr The address to compare against.

operator!=

const

bool operator!=(const Address & addr) const

Returns true if the host or port of the addresses differ.

Parameters

  • addr The address to compare against.

Public Static Methods

ReturnNameDescription
uint16_tresolveService staticResolves a service name or decimal port string to a port number.
boolvalidateIP staticReturns 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

  • service Service 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

  • address The string to validate.

Returns

true if the address parses as a valid IP address, false otherwise.

Protected Methods

ReturnNameDescription
voidinit

init

void init(const std::string & host, uint16_t port)

Public Types

NameDescription
FamilyPossible address families for IP addresses.

Family

enum Family

Possible address families for IP addresses.

ValueDescription
IPv4
IPv6

Private Attributes

ReturnNameDescription
std::shared_ptr< AddressBase >_base

_base

std::shared_ptr< AddressBase > _base