Poco::Net

class SocketAddress

Library: Net
Package: NetCore
Header: Poco/Net/SocketAddress.h

Description

This class represents an internet (IP) endpoint/socket address. The address can belong either to the IPv4, IPv6 or Unix local family. IP addresses consist of a host address and a port number. An Unix local socket address consists of a path to socket file. Abstract local sockets, which operate without the need for interaction with the filesystem, are supported on Linux only.

Member Summary

Member Functions: addr, af, family, host, init, isUnixLocal, length, operator !=, operator <, operator =, operator ==, port, resolveService, toString

Types Aliases

Family

using Family = AddressFamily::Family;

Enumerations

Anonymous

MAX_ADDRESS_LENGTH = sizeof (struct sockaddr_un)

Maximum length in bytes of a socket address.

Constructors

SocketAddress

SocketAddress();

Creates a wildcard (all zero) IPv4 SocketAddress.

SocketAddress

explicit SocketAddress(
    Family family
);

Creates a SocketAddress with unspecified (wildcard) IP address of the given family.

SocketAddress

explicit SocketAddress(
    Poco::UInt16 port
);

Creates a SocketAddress with unspecified (wildcard) IP address and given port number.

SocketAddress

explicit SocketAddress(
    const std::string & hostAndPort
);

Creates a SocketAddress from an IP address or host name and the 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
[::ffff:192.168.1.120]:2040
www.appinf.com:8080

On platforms supporting UNIX_LOCAL sockets, hostAndPort can also be a valid absolute local socket file path.

Examples:

/tmp/local.sock
C:\Temp\local.sock

On Linux, abstract local sockets are supported as well. Abstract local sockets operate in a namespace that has no need for a filesystem. They are identified by a null byte at the beginning of the path.

Example:

\0abstract.sock

SocketAddress

SocketAddress(
    const SocketAddress & addr
);

Creates a SocketAddress by copying another one.

SocketAddress

SocketAddress(
    SocketAddress && addr
);

Creates a SocketAddress by moving another one.

SocketAddress

SocketAddress(
    const IPAddress & hostAddress,
    Poco::UInt16 portNumber
);

Creates a SocketAddress from an IP address and given port number.

SocketAddress

SocketAddress(
    Family family,
    Poco::UInt16 port
);

Creates a SocketAddress with unspecified (wildcard) IP address of the given family, and given port number.

SocketAddress

SocketAddress(
    const std::string & hostAddress,
    Poco::UInt16 portNumber
);

Creates a SocketAddress from an IP address and given port number.

The IP address must either be a domain name, or it must be in dotted decimal (IPv4) or hex string (IPv6) format.

SocketAddress

SocketAddress(
    const std::string & hostAddress,
    const std::string & portNumber
);

Creates a SocketAddress from an IP address and the 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.

SocketAddress

SocketAddress(
    Family family,
    const std::string & addr
);

Creates a SocketAddress of the given family from a string representation of the address, which is either (1) an IP address and port number, separated by a colon for IPv4 or IPv6 addresses, or (2) path for UNIX_LOCAL sockets. See SocketAddress(const string&) documentation for more details.

SocketAddress

SocketAddress(
    const struct sockaddr * addr,
    socklen_t length
);

Creates a SocketAddress from a native socket address.

SocketAddress

SocketAddress(
    Family family,
    const std::string & hostAddress,
    Poco::UInt16 portNumber
);

Creates a SocketAddress from an IP address and given port number.

The IP address must either be a domain name, or it must be in dotted decimal (IPv4) or hex string (IPv6) format.

If a domain name is given in hostAddress, it is resolved and the address matching the given family is used. If no address matching the given family is found, or the IP address given in hostAddress does not match the given family, an AddressFamilyMismatchException is thrown.

SocketAddress

SocketAddress(
    Family family,
    const std::string & hostAddress,
    const std::string & portNumber
);

Creates a SocketAddress from an IP address and the 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.

If a domain name is given in hostAddress, it is resolved and the address matching the given family is used. If no address matching the given family is found, or the IP address given in hostAddress does not match the given family, an AddressFamilyMismatchException is thrown.

Destructor

~SocketAddress

~SocketAddress();

Destroys the SocketAddress.

Member Functions

addr

const struct sockaddr * addr() const;

Returns a pointer to the internal native socket address.

af

int af() const;

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

family

Family family() const;

Returns the address family of the host's address.

host

IPAddress host() const;

Returns the host IP address.

isUnixLocal static

static bool isUnixLocal(
    const std::string & hostAndPort
);

Returns true iff hostAndPort is an absolute file path.

length

socklen_t length() const;

Returns the length of the internal native socket address.

operator != inline

bool operator != (
    const SocketAddress & socketAddress
) const;

operator <

bool operator < (
    const SocketAddress & socketAddress
) const;

operator =

SocketAddress & operator = (
    const SocketAddress & socketAddress
);

Assigns another SocketAddress.

operator =

SocketAddress & operator = (
    SocketAddress && socketAddress
);

Move-assigns another SocketAddress.

operator == inline

bool operator == (
    const SocketAddress & socketAddress
) const;

port

Poco::UInt16 port() const;

Returns the port number.

toString

std::string toString() const;

Returns a string representation of the address.

init protected

void init(
    const IPAddress & hostAddress,
    Poco::UInt16 portNumber
);

init protected

void init(
    const std::string & hostAddress,
    Poco::UInt16 portNumber
);

init protected

void init(
    Family family,
    const std::string & hostAddress,
    Poco::UInt16 portNumber
);

init protected

void init(
    Family family,
    const std::string & address
);

init protected

void init(
    const std::string & hostAndPort
);

resolveService protected

Poco::UInt16 resolveService(
    const std::string & service
);

Variables

IPv4 static

static const Family IPv4 = AddressFamily::IPv4;

IPv6 static

static const Family IPv6 = AddressFamily::IPv6;

UNIX_LOCAL static

static const Family UNIX_LOCAL = AddressFamily::UNIX_LOCAL;