8 #ifndef _INC_cNetAddr_H
9 #define _INC_cNetAddr_H
10 #ifndef NO_PRAGMA_ONCE
23 typedef int socklen_t;
39 socklen_t m_nSockAddrLen;
50 ASSERT(get_Family() == AF_INET);
51 return m_u.m_SockAddr4.sin_addr;
55 ASSERT(get_Family() == AF_INET);
56 return m_u.m_SockAddr4.sin_addr;
60 ASSERT(get_Family() == AF_INET6);
61 return m_u.m_SockAddr6.sin6_addr;
65 ASSERT(get_Family() == AF_INET6);
66 return m_u.m_SockAddr6.sin6_addr;
71 : m_nSockAddrLen(sizeof(m_u))
80 : m_nSockAddrLen(
sizeof(m_u))
86 m_u.m_SockAddr.sa_family = nFamily;
90 : m_nSockAddrLen(
sizeof(m_u))
95 m_u.m_SockAddr.sa_family = AF_INET;
97 m_u.m_SockAddr4.sin_addr = ip;
100 : m_nSockAddrLen(sizeof(m_u))
107 put_AddrStr(pszAddr, bWait);
110 : m_nSockAddrLen(sizeof(m_u))
115 m_u.m_SockAddr4.sin_port =
cMemT::HtoN(wPortDefault);
116 put_AddrStr(pszAddr, bWait);
122 return m_u.m_SockAddr.sa_family;
128 return m_nSockAddrLen;
133 return m_nSockAddrLen;
138 return (sockaddr&)m_u.m_SockAddr;
143 return (sockaddr&)m_u.m_SockAddr;
148 return (sockaddr&)m_u.m_SockAddr;
151 bool isAddrValid()
const;
154 m_nSockAddrLen =
sizeof(m_u);
163 if (m_nSockAddrLen != SocketAddr.m_nSockAddrLen)
165 return m_nSockAddrLen - SocketAddr.m_nSockAddrLen;
167 ASSERT((
size_t)m_nSockAddrLen <=
sizeof(m_u));
168 COMPARE_t iRet = ::memcmp(&m_u, &SocketAddr.m_u, m_nSockAddrLen);
187 return get_HashCodeHost();
210 return(m_u.m_SockAddr4.sin_port != k_NET_PORT_INVALID);
212 static char*
GRAYCALL FindPortExtPtr(
const char* pszAddr);
213 bool put_PortServiceName(
const char* pszPortServiceName);
214 cStringA get_PortServiceName()
const;
222 return (
const BYTE*)&m_u.m_SockAddr4.sin_addr;
227 return (BYTE*)&m_u.m_SockAddr4.sin_addr;
235 bool isHostLoopback()
const;
236 bool isHostPrivate()
const;
237 bool put_HostLoopback(
sa_family_t nFamily = AF_UNSPEC);
241 HRESULT SetHostStr(
const char* pszHost,
bool bWait =
false);
242 HRESULT SetHostStrFix(
const char* pszAddr,
bool bWait =
false);
249 m_nSockAddrLen =
sizeof(m_u.m_SockAddr4);
250 m_u.m_SockAddr4.sin_family = AF_INET;
257 m_nSockAddrLen =
sizeof(m_u.m_SockAddr6);
258 m_u.m_SockAddr6.sin6_family = AF_INET6;
259 ref_HostIp6() = addr;
261 bool SetHostData(
sa_family_t nFamily,
const void* pHostData,
size_t nDataSize =
sizeof(in_addr));
268 put_PortNumber(wPort);
277 bool SetAddrData(
const sockaddr* pSockAddr, socklen_t nSockAddrLen);
280 HRESULT put_AddrStr(
const char* pszAddr,
bool bWait =
false);
#define GRAYCALL
declare calling convention for static functions so everyone knows the arg passing scheme....
Definition: GrayCore.h:36
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define DEBUG_ASSERT(exp, sDesc)
Definition: cDebugAssert.h:93
short sa_family_t
enum of network family types. e.g. AF_UNSPEC=0, AF_INET = 2, AF_INET6 = 23, AF_NETBIOS = 17,...
Definition: cNetHost.h:19
Definition: cNetAddr.h:31
void ResetHost()
Definition: cNetAddr.h:262
const sockaddr & ref_Addr() const noexcept
Definition: cNetAddr.h:140
void ResetAddr() noexcept
Definition: cNetAddr.h:152
sockaddr_in6 m_SockAddr6
Address is ipv6 = 28 bytes.
Definition: cNetAddr.h:44
cNetAddress(in_addr ip, NET_PORT_t wPort=k_NET_PORT_INVALID) noexcept
Definition: cNetAddr.h:89
void put_HostIp4(in_addr nIP)
Definition: cNetAddr.h:246
size_t get_HostLen() const
Definition: cNetAddr.h:229
const BYTE * get_HostPtr() const
Definition: cNetAddr.h:219
void put_HostIp6(const in6_addr &addr)
Definition: cNetAddr.h:254
bool isPortValid() const
Definition: cNetAddr.h:207
const in_addr & ref_HostIp4() const
Definition: cNetAddr.h:48
in_addr & ref_HostIp4()
Definition: cNetAddr.h:53
sockaddr_in m_SockAddr4
Address is ipv4 = 16 bytes.
Definition: cNetAddr.h:43
cNetAddress(const char *pszAddr, bool bWait=false)
Definition: cNetAddr.h:99
COMPARE_t CompareAddr(const cNetAddress &SocketAddr) const
Definition: cNetAddr.h:160
cNetAddress() noexcept
Definition: cNetAddr.h:70
in6_addr & ref_HostIp6()
Definition: cNetAddr.h:63
sa_family_t get_Family() const noexcept
Definition: cNetAddr.h:119
socklen_t get_AddrLen() const noexcept
Definition: cNetAddr.h:124
void put_Addr(const cNetAddress &rAddr)
Definition: cNetAddr.h:273
socklen_t & ref_AddrLen() noexcept
Definition: cNetAddr.h:130
NET_PORT_t get_PortNumber() const noexcept
Definition: cNetAddr.h:193
sockaddr & ref_Addr() noexcept
Definition: cNetAddr.h:145
sockaddr m_SockAddr
Address that is family independent. (interchangeable with sockaddr/SOCKADDR/SOCKADDR_IN....
Definition: cNetAddr.h:42
void put_PortNumber(NET_PORT_t wPort)
Definition: cNetAddr.h:201
UNITTEST_FRIEND(cNetAddress)
const in6_addr & ref_HostIp6() const
Definition: cNetAddr.h:58
cNetAddress(const char *pszAddr, NET_PORT_t wPortDefault, bool bWait=false)
Definition: cNetAddr.h:109
BYTE * ref_HostPtr() const
Definition: cNetAddr.h:224
cNetAddress(sa_family_t nFamily, NET_PORT_t wPort=k_NET_PORT_INVALID) noexcept
Definition: cNetAddr.h:79
const sockaddr & get_Addr() const noexcept
Definition: cNetAddr.h:135
Definition: cNetHost.h:64
Definition: cNetHost.h:237
Definition: cStream.h:126
WORD NET_PORT_t
WinINet calls ports NET_PORT_t INTERNET_PORT = a service.
Definition: cNetPort.h:21
UNITTEST2_PREDEF(cQuadtree)
cArrayStruct< cNetAddress > cNetAddressArray
Definition: cNetAddr.h:290
int COMPARE_t
result of compare. 0=same, 1=a>b, -1=a<b
Definition: cValT.h:17
UINT_PTR HASHCODE_t
could hold a pointer converted to a number? maybe 64 or 32 bit ? same as size_t.
Definition: GrayCore.h:116
bool operator!=(const cTimeDouble &dt1, const cTimeDouble &dt2)
Definition: cTimeDouble.h:254
bool operator==(const cTimeDouble &dt1, const cTimeDouble &dt2)
Definition: cTimeDouble.h:250
@ COMPARE_Equal
VARCMP_EQ.
Definition: cValT.h:23
static TYPE NtoH(TYPE nVal) noexcept
Definition: cMem.h:502
static TYPE HtoN(TYPE nVal) noexcept
Definition: cMem.h:491
static void Zero(void *pData, size_t nSizeBlock) noexcept
Definition: cMem.h:100