11#if __has_include("defs.h")
15#include "safe_winsock.h"
27 explicit inaddr (
unsigned long host = INADDR_ANY,
unsigned short port = 0);
30 const std::string& proto = std::string ());
32 inaddr (
const sockaddr& adr);
36 operator sockaddr* ()
const
38 return (sockaddr*)&sa;
44 operator const sockaddr& ()
const
46 return *(sockaddr*)&sa;
52 return *(sockaddr*)&sa;
56 unsigned short port ()
const
58 return ntohs (sa.sin_port);
62 void port (
unsigned short p)
64 sa.sin_port = htons (p);
68 erc port (
const std::string& service,
const std::string& proto = std::string ());
73 return ntohl (sa.sin_addr.s_addr);
79 sa.sin_addr.s_addr = htonl (h);
87 const char*
ntoa ()
const;
92 return ((
host () & 0xf0000000) == 0xe0000000);
104 memcpy (&sa, &rhs.sa, sizeof (sa));
111 return (sa.sin_addr.s_addr == other.sa.sin_addr.s_addr)
112 && (sa.sin_port == other.sa.sin_port);
118 return (!
operator== (other));
124 return std::string (addr.
ntoa ()) +
':' + std::to_string (addr.
port ());
127inline std::ostream& operator<< (std::ostream& strm,
const mlib::inaddr& addr)
objects returned as a function result or thrown directly.
Definition errorcode.h:73
Wrapper for sockaddr structure.
Definition inaddr.h:25
static unsigned localhost()
Return local address in HOST order.
Definition inaddr.cpp:161
void host(unsigned int h)
set host address
Definition inaddr.h:77
std::string hostname() const
Find hostname from the host address in sockaddr.
Definition inaddr.cpp:141
void port(unsigned short p)
set port number
Definition inaddr.h:62
const char * ntoa() const
return host address in dotted format
Definition inaddr.cpp:201
inaddr(unsigned long host=INADDR_ANY, unsigned short port=0)
Fill sockaddr structure with host number and port.
Definition inaddr.cpp:35
unsigned short port() const
return port number in host order
Definition inaddr.h:56
unsigned host() const
return host address in host order
Definition inaddr.h:71
inaddr & operator=(const inaddr &rhs)
Assignment operator.
Definition inaddr.h:102
bool operator!=(const inaddr &other) const
Inequality operator.
Definition inaddr.h:116
bool is_multicast() const
check if it's multicast host
Definition inaddr.h:90
bool operator==(const inaddr &other) const
Equality operator.
Definition inaddr.h:109
Definition of mlib::erc and mlib::errfac classes.
std::string to_string(const mlib::inaddr &addr)
Convert an address to a string in format '<hostname>:<port>
Definition inaddr.h:122